我阅读了将数据列信息分配给 2 个绑定变量的脚本。
像这样的东西:
EXEC SQL SELECT
var1
into :v.v1:v2
from table
里面不应该有逗号吗?或者这就像用相同的值分配var1
到v.v1
和也v2
一样?
我阅读了将数据列信息分配给 2 个绑定变量的脚本。
像这样的东西:
EXEC SQL SELECT
var1
into :v.v1:v2
from table
里面不应该有逗号吗?或者这就像用相同的值分配var1
到v.v1
和也v2
一样?
上面的脚本只会给出错误。如果要分配值,则需要逗号。
语法是:- 例如,如果您想从 EMPLOYEES 获取 Empno、Ename、Deptno、salary。plsql 块如下所示。
DECLARE
L_EMPNO NUMBER;
L_ENAME VARCHAR2(1000);
L_DEPTNO NUMBER;
L_SALARY NUMBER;
BEGIN
SELECT EMPNO, ENAME, DEPTNO, SALARY
INTO L_EMPNO, L_ENAME, L_DEPTNO, L_SALARY
FROM EMPLOYEES
WHERE EMPNO=100;
END;
此代码是 PRO*C 程序的片段,这是一个带有嵌入式 SQL 的 C 程序。
v2 是一个指示变量。有关信息,请参见此处:https ://docs.oracle.com/cd/B28359_01/appdev.111/b28427/pc_04dat.htm#i12463
指示变量将包含与其关联变量相关的值,在本例中为 v.v1,并在使用它的操作之后设置。在这种情况下,选择后,您可以测试 v2 并根据它的值告诉您有关 v.v1 的信息:
从上面的链接中,如果 v2 等于:
0 - The operation was successful
-1 - A NULL was returned, inserted, or updated.
-2 - Output to a character host variable from a "long" type was truncated, but the original column length cannot be determined.
>0 - The result of a SELECT or FETCH into a character host variable was truncated. In this case, if the host variable is a multibyte character variable, the indicator value is the original column length in characters. If the host variable is not a multibye character variable, then the indicator length is the original column length in bytes.
我建议使用它的其他形式,这样可以让在你之后维护它的人清楚事情(至少帮那个人一个忙,并在你明白这一点时发表评论)。始终为将在您之后维护的人编码。在你这样做之前你不希望那个人吗?!:
EXEC SQL SELECT
var1
into :v.v1 INDICATOR :v2
from table