假设存储过程名字SP_TEST,一个参数v_SQL,是sql语句
存储过程内容:
v_id number;
v_id := 11111; --这个可能事动态从表取得的值
execute immediate v_SQL;在Java代码中组合参数:
sql = "insert into b (id,code) values(1,'||v_id||')";执行存储过程,这个时候存储过程把v_id看做一个字符串而不是存储过程变量这个问题该怎么解决?

解决方案 »

  1.   

    方法:
    1。存储过程参数只传变量值,存储过程拼sql字符串。
    2。java拼完整的sqll字符串,之后把完整字符串作为变量传给存储过程。很多东西可以变通的。能完成就ok了。
      

  2.   

    那把你要传递的sql语句分成两部分,一部分是变量前的东西,一部分是变量后的东西。
    在prodedure中跟其中的变量重新组合,不就解决了吗.
      

  3.   

    现在是那个传入的SQL是不确定的,动态的,分离不出来
      

  4.   

    设计存在缺陷!虽说有缺陷,但是还有方法:
    在procedure中通过变量替换:把传过来的sql字符串进行对于变量的替换,类似replace(str,替代变量字符串,变量值)。
    转换完成后,再execute immediate sql;