0

我阅读了将数据列信息分配给 2 个绑定变量的脚本。

像这样的东西:

EXEC SQL SELECT 
var1
into :v.v1:v2
from table

里面不应该有逗号吗?或者这就像用相同的值分配var1v.v1和也v2一样?

4

2 回答 2

0

上面的脚本只会给出错误。如果要分配值,则需要逗号。

语法是:- 例如,如果您想从 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;
于 2015-05-08T05:28:42.767 回答
0

此代码是 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
于 2015-05-14T17:29:51.383 回答