CREATE OR REPLACE PROCEDURE test(vswlbh out varchar2) AS
vswhere varchar2(2000);BEGINvswhere := '(''PJ'',''AA'',''BB'')';

select max(F_wlmc) into vswlbh from TABLE where F_wlbh in ''||vswhere||'';

end;
红色的这一句在数据库中执行明明有值,但放到存储过程里执行没有错误,就是取不出数来,是不是这句话语法有问题?

解决方案 »

  1.   

    这就是完整代码本意是想组成 select max(F_wlmc) into vswlbh from TABLE where F_wlbh in ('PJ','AA','BB');这样的串,vswhere变量的取值没有问题
      

  2.   

    immediate execute 'select max(F_wlmc) into vswlbh from TABLE where F_wlbh in '||vswhere;
      

  3.   

    immediate execute 'select max(F_wlmc) into vswlbh from TABLE where F_wlbh in '||vswhere';
      

  4.   

    呵呵 楼上的也迷惑了,immediate execute 应该是  execute immediate
      

  5.   

    这种语法不对,执行不过去,语句中有个vswlbh的变量,无法将值取到变量里啊
      

  6.   

    搞定了execute immediate 'select max(F_wlmc) from TABLE where F_wlbh in '||vswhere into vswlbh;
      

  7.   

    select max(F_wlmc) into vswlbh from TABLE where F_wlbh in ''||vswhere||'';改成这样
    execute immediate 'select max(F_wlmc)  from TABLE where F_wlbh in'||vswhere into vswlbh
      

  8.   

    我以为我菜,看来菜鸟还挺多的啊。
    我是自学ORACLE啊.可惜公司只用SQL2005啊!