PL / SQL中的绑定变量

时间:2015-05-08 03:01:35

标签: oracle plsql embedded-sql

我读了这个脚本,它将数据列信息分配到2个绑定变量中。

类似的东西:

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

那里不应该有逗号吗?或者这就像将var1分配到v.v1以及分配给具有相同值的v2一样?

2 个答案:

答案 0 :(得分:0)

上述脚本只会出错。如果要分配值,则需要相同的逗号。

语法如下: - 如果你想获取Empno,Ename,Deptno,薪水来自     员工.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;

答案 1 :(得分: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