0

使用 oracle 11g 64bit 和 sqldeveloper 4.0。尝试运行以下 sql 脚本:

variable  v_sak_id NUMBER; 
variable  v_idNum varchar; 
exec :v_idNum := 'A1111200';
select sak_id into :v_sak_id from MemerId where idNum= :v_idNum;

收到错误信息:

用法:VAR[IABLE] [ [ 数字 | 字符 | 字符 (n [字符|字节]) | VARCHAR2 (n [CHAR|BYTE]) | NCHAR | NCHAR (n) | NVARCHAR2 (n) | CLOB | NCLOB | REFCURSOR | BINARY_FLOAT | BINARY_DOUBLE ] ]

匿名块已完成错误从第 6 行开始在命令中 - 从 MemerId 中选择 sak_id 到 :v_sak_id 其中 idNum= :v_idNum 错误报告 - SQL 错误:ORA-01006:绑定变量不存在 01006。00000 -“绑定变量不存在” *原因:
*措施:

有什么帮助吗?

4

3 回答 3

2
  1. 当您声明一个字符串变量时,您必须指定该变量的大小。

  2. 尽管到目前为止varcharandvarchar2是同义词,但请不要使用varcharuse varchar2datatatype。Oracle 正计划将varchar数据类型重新定义为单独的数据类型。

  3. 正如已经被告知select into在 Pl/SQL 中使用了语句,所以你应该把你的select语句放在一个begin end块中,或者select使用exec命令执行你的语句,它在后台将你的 select 语句包装在begin end块中:

示例(我假设有一个错字,表的名称应该是memBerid,但无论如何。保持原样。):

create table  memerid(
 sak_id number,
 idNum varchar2(123)
);

insert into MemerId(sak_id, idNum)
  values(1, 'A1111200');

commit;

variable  v_sak_id number; 
variable  v_idNum  varchar2(123); 

exec :v_idNum := 'A1111200';
exec select sak_id into :v_sak_id from MemerId  where idNum= :v_idNum;

print v_sak_id;

结果:

table MEMERID created.
1 rows inserted.
committed.
anonymous block completed
anonymous block completed

V_SAK_ID
-
1
于 2013-09-15T20:05:06.987 回答
0

SELECT ... INTO ...是 PL/SQL 语法,而不是 SQL。由于您在 SQL Developer 中运行,因此您可以使用select sak_id from MemerId where idNum= :v_idNum;,系统会提示您输入 v_idNum 的值。使用绑定变量的其他执行将保留以前的值,或者您可以更改它。

于 2013-09-15T19:07:13.110 回答
0

尝试类似的东西

variable  v_sak_id NUMBER; 
variable  v_idNum varchar; 
exec :v_idNum := 'A1111200';

begin
   select sak_id into :v_sak_id from MemerId where idNum= :v_idNum;
end;

也就是说,select ... into构造/语句需要包含在 PL/SQL 块中,这是通过将语句嵌入到begin .. end.

于 2013-09-15T19:10:22.007 回答