在insert语句中选择语句

时间:2011-08-04 08:05:49

标签: sql oracle plsql oracle10g

我尝试了下面的SQL查询

INSERT INTO test.ACT_QUERY values(2139,2,'SELECT ''D'',ORDER_ID from dual');

当一个java程序从test.ACT_QUERY表中运行这个select语句并且假脱机到输出文件时,它给出一个“D”,123。我只想要D,123。不确定报价为什么会出现。我需要在select语句中替换以获得输出为D,123

1 个答案:

答案 0 :(得分:1)

很难想象您的问题。当然,原则上你正在做的事情没有任何错误,它在PL / SQL中有效。

这是您的测试数据,稍微调整以在我的数据库中运行:

SQL> INSERT INTO ACT_QUERY values(2139,2,'SELECT ''D'', DUMMY from dual');

1 row created.

SQL> select * from act_query
  2  /

        ID       BLAH
---------- ----------
QRY_TXT
--------------------------------------------------------------------------------
      2139          2
SELECT 'D', DUMMY from dual


SQL>

让我们滚!

SQL> begin
  2      for r in (select * from
  3
  4  .
SQL> declare
  2      v1 char(1);
  3      v2 char(1);
  4  begin
  5      for r in (select * from act_query)
  6      loop
  7          execute immediate r.qry_txt into v1, v2;
  8          dbms_output.put_line(r.qry_txt);
  9          dbms_output.put_line('v1='||v1||'::v2='||v2);
 10      end loop;
 11  end;
 12  /
SELECT 'D'as D, DUMMY from dual
v1=D::v2=X

PL/SQL procedure successfully completed.

SQL>

所以,你需要更详细地解释一下你的情况,用实际输出的'cut'n'来实现。