在 SQL Oracle Developer 中声明一个 BIT 变量并将其设置为子查询
Declare a BIT variable and set it as a Subquery in SQL Oracle Developer
我正在使用 Oracle SQL Developer,我正在尝试将布尔变量设置为子查询的结果。但是我收到一个语法错误,说我缺少“:”。我试图在我的代码中几乎所有地方都插入冒号,但它似乎不起作用。有什么想法吗?
DECLARE @HasntPassedCourse BIT;
SET @HasntPassedCourse =
EXISTS
(SELECT P.cid, P.code
FROM PassedCourses P
WHERE P.code != :newline.code AND P.cid != :newline.cid);
您需要如下内容。首先,Oracle 不允许变量名使用 @
符号。它也没有 BIT
数据类型(尽管 PL/SQL 将允许 BOOLEAN
)。您也不能将任何类型的列值插入到 BOOLEAN
变量中。
DECLARE
HasntPassedCourse BOOLEAN;
v_cnt NUMBER;
BEGIN
HasntPassedCourse := FALSE;
SELECT COUNT(*) INTO v_cnt FROM dual;
IF v_cnt != 0 THEN
HasntPassedCourse := TRUE;
END IF;
END;
/
就我个人而言,我认为您最好只使用查询中返回的行数,并留下 0
来指示 FALSE
:
DECLARE
HasntPassedCourse NUMBER;
BEGIN
SELECT COUNT(*) INTO HasntPassedCourse FROM <your query here>;
END;
/
如果您只需要零和一,请将 AND rownum = 1
添加到您的查询中。因此,您可以执行以下操作:
DECLARE
HasntPassedCourse NUMBER;
BEGIN
SELECT COUNT(*) INTO HasntPassedCourse FROM PassedCourses P
WHERE P.code != :newline.code AND P.cid != :newline.cid
AND rownum = 1;
END;
/
我假设 :newline
是对通过触发器添加或更新的行的引用?
我正在使用 Oracle SQL Developer,我正在尝试将布尔变量设置为子查询的结果。但是我收到一个语法错误,说我缺少“:”。我试图在我的代码中几乎所有地方都插入冒号,但它似乎不起作用。有什么想法吗?
DECLARE @HasntPassedCourse BIT;
SET @HasntPassedCourse =
EXISTS
(SELECT P.cid, P.code
FROM PassedCourses P
WHERE P.code != :newline.code AND P.cid != :newline.cid);
您需要如下内容。首先,Oracle 不允许变量名使用 @
符号。它也没有 BIT
数据类型(尽管 PL/SQL 将允许 BOOLEAN
)。您也不能将任何类型的列值插入到 BOOLEAN
变量中。
DECLARE
HasntPassedCourse BOOLEAN;
v_cnt NUMBER;
BEGIN
HasntPassedCourse := FALSE;
SELECT COUNT(*) INTO v_cnt FROM dual;
IF v_cnt != 0 THEN
HasntPassedCourse := TRUE;
END IF;
END;
/
就我个人而言,我认为您最好只使用查询中返回的行数,并留下 0
来指示 FALSE
:
DECLARE
HasntPassedCourse NUMBER;
BEGIN
SELECT COUNT(*) INTO HasntPassedCourse FROM <your query here>;
END;
/
如果您只需要零和一,请将 AND rownum = 1
添加到您的查询中。因此,您可以执行以下操作:
DECLARE
HasntPassedCourse NUMBER;
BEGIN
SELECT COUNT(*) INTO HasntPassedCourse FROM PassedCourses P
WHERE P.code != :newline.code AND P.cid != :newline.cid
AND rownum = 1;
END;
/
我假设 :newline
是对通过触发器添加或更新的行的引用?