01008. 00000 - "并非所有变量都绑定了#34;

时间:2014-07-03 07:28:17

标签: oracle


declare
.
.
.
.
begin.
.
.
  for i in (Select * from bpt_mapping_logic where master = tab_name and CHILD = 'MI9_CST_TEMP' ) loop

          str1 := i.all_cols;
          str2 := i.default_val;

          select 'insert into '||i.child||'_temp 
          ('||str1||' )
          values 
          (' ||str2||' )' into str3 from dual;

          select i.mapping into str5 from dual;    

          dbms_output.put_line (str3);
          EXECUTE IMMEDIATE  STR3;

end loop;

end;

以上代码即时获取 01008. 00000 - “并非所有变量绑定”错误

str3 ::::::::

的dbms输出
str3 =  

insert into  
MI9_CST_TEMP_temp (  A , B , C , D )
values
('aaa'  , 'bbb' , &C . &D);

显示

  1. 00000 - “并非所有变量都绑定” *原因:
  2. 执行期间

    错误

1 个答案:

答案 0 :(得分:0)

EXECUTE IMMEDIATE无法以这种方式访问​​SQL * PLUS变量;如果您知道将有两个主机变量,将命名为& C和& D,您可以尝试

str3 := replace(replace(str3, chr(38)||'C', ':1'), chr(38)||'D', ':2');

EXECUTE IMMEDIATE  STR3 using '&C', '&D';