【问题标题】:select statement inside a insert statement插入语句中的选择语句
【发布时间】:2011-08-04 08:05:49
【问题描述】:

我尝试了下面的 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

【问题讨论】:

  • 最后应该执行的插入语句是什么? INSERT INTO test.ACT_QUERY values(2139,2,'D', 123); ??
  • 我假设 select 语句被执行并且输出被写入输出文件,在这种情况下,问题在于将结果集写入文件而不是 select 语句。跨度>

标签: sql oracle plsql oracle10g


【解决方案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>

因此,您需要更详细地解释您的情况,并剪切实际输出。

【讨论】:

  • 非常感谢您提供的信息。为迟到的回复道歉
  • 你的正确。问题在于正在检索的 java 程序有问题。非常感谢您的宝贵时间
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多