create or replace procedure WIMS_Update(
sqls in varchar2
) is
begin
  execute immediate sqls;end WIMS_Update;
这个是存储过程,我想要执行传进来的sqls,怎么执行?我这样写,执行出错。但是传过来的参数单独执行是可以的。不知道为啥。错误是无效字符。

解决方案 »

  1.   

    请问你这样写与直接写SQL查询有什么区别?为什么要用存储过程来处理?用EXEC来执行你传来的SQL
    但是这个不会走索引。
      

  2.   

    请问你这样写与直接写SQL查询有什么区别?为什么要用存储过程来处理?用EXEC来执行你传来的SQL
    但是这个不会走索引。
      

  3.   

    -- 只是一些select 查询?还是有其他的SQL呢?比如:插入、删除、更新等。
      

  4.   

    对,有其他的操作,创建库,创建表,更新表中的列,这个是在asp.net中XML里写的sql语句,方便在部署的时候不用手动去进行数据库操作。特别是更新很麻烦,所以弄了个这个,现在有个问题XML里语句读出来是一条,有可能是这样   一段语句;一段语句;一段语句;  这样在PLSQL中执行是通不过的,只能进行回车才可以执行。谁有好的想法,可以说下。
      

  5.   

    举个例子:
    如果你的sql 是 update  tab  set  name='张三'   where id=3   这样你的存储过程是对的 只是没写commit 语句没有提交。
    如果你的sql 是动态sql   里面的值如'张三'不是固定的,那么需要使用引入using XX
      

  6.   

    关键是sql是 select * from table1;select * from table2;select * from table3;这样的语句如果在分号后回车换行,是可以执行,但是如果在一行上是不会执行的。这里不好弄,如何在分号后进行换行?传过来的参数应该是在一行的。不好处理。