声明多个变量oracle sql脚本

时间:2013-09-15 18:40:57

标签: sql oracle

使用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 - “绑定变量不存在”   *原因:
  *操作:

任何帮助?

3 个答案:

答案 0 :(得分:2)

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

  2. 虽然截至目前varcharvarchar2是同义词,但请不要使用varchar使用varchar2数据类型。 Oracle计划将varchar数据类型重新定义为单独的数据类型。

  3. 因为已经告诉select into语句在Pl / SQL中使用,所以你应该将select语句放在begin end块中或执行你的{{1使用select命令的语句,在exec块中包含你的select语句:

  4. 示例(我假设有一个拼写错误,表的名称应该是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来实现。