使用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] [[NUMBER | CHAR | CHAR(n [CHAR | BYTE]) | VARCHAR2(n [CHAR | BYTE])| NCHAR | NCHAR(n)| NVARCHAR2(n)| CLOB | NCLOB | REFCURSOR | BINARY_FLOAT | BINARY_DOUBLE]]
匿名阻止已完成错误从第6行开始: 选择sak_id为:来自MemerId的v_sak_id,其中idNum =:v_idNum错误 report - SQL错误:ORA-01006:绑定变量不存在 01006. 00000 - “绑定变量不存在” *原因:
*操作:
任何帮助?
答案 0 :(得分:2)
声明字符串变量时,必须指定该变量的大小。
虽然截至目前varchar
和varchar2
是同义词,但请不要使用varchar
使用varchar2
数据类型。 Oracle计划将varchar
数据类型重新定义为单独的数据类型。
因为已经告诉select into
语句在Pl / SQL中使用,所以你应该将select
语句放在begin end
块中或执行你的{{1使用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;
答案 1 :(得分:0)
SELECT ... INTO ...
是PL / SQL语法,而不是SQL。由于您在SQL Developer中运行,因此只需使用select sak_id from MemerId where idNum= :v_idNum;
,系统就会提示您输入v_idNum的值。使用bind变量的其他执行将保留以前的值,或者您可以更改它。
答案 2 :(得分: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
来实现。