现在在一个表中用两个字段,sql和result,其中sql字段里都是sql查询语句,现在要写一个存储过程
执行这个表中的sql字段中所有的sql查询语句,把结果更新到相应的reslut字段中。请问oracle里面
是不是有一个函数,就是传人sql查询语句就可以得到返回值,如果没有怎么写这个存储过程,谢谢

解决方案 »

  1.   

    -- 又是SQL语句,又是更新的,估计你自己都不知道你自己在干嘛!
      

  2.   

    -- SQL语句当然可以得到返回值,问题是:你是什么样的SQL语句?你想得到什么样的返回值,不同的返回值有不同的操作方法(如果返回的是数据集,则用游标获取返回值(数据集);如果返回的是一条记录(多个字段),可以定义多个变量去获取;如果返回的是单条记录的单个字段,可以用一个变量去获取)!-- 所以:首先:你要明白你的SQL语句是怎么样的!
      

  3.   

    没听说过什么传入sql语句可以得到结果的存储过程,你的需求可以通过动态sql执行,先从这个表中取出sql语句,然后execute immediate sql returning x来动态执行这条语句,并用returning来指定接收结果的对象
      

  4.   

    1、写一游标,取表(TABLE)sql,rowid
    2、循环处理游标,在处理过程中拼接SQL,并执行:
        exec_sql := 'update TABLE set result = ' || SQL || ' WHERE ROWID='||rowid; 
        execute immediate  exec_sql 
      

  5.   

    写个自定义的oracle函数,把sql和result作为参数传进去。
    把result定义成游标类型。
    函数体begin end实现部分用
    open result for sql;
    return result;
    接着在程序调用这个函数。
      

  6.   

    对每个sql字段的每条sql执行结果输出到文本中,在insert这些信息到result字段。
      

  7.   

    写个自定义的oracle函数,把sql和result作为参数传进去。
    把result定义成游标类型。
    函数体begin end实现部分用
    先用游標遍歷sql,針對每一個得到的sql語句,
    exec執行,把結果寫到對應的result中,就OK了。
    接着在程序调用这个函数。
      

  8.   

    你的返回值到底是什么类型,你要定义什么类型输出参数去存返回值,然后再插入你所谓的reuslt
      

  9.   

    执行问题不大,把需要执行的sql语句逐条取出来,执行就可以了,但结果放入另外一个字段有什么意义呢?