【问题标题】:DYNAMIC SQL FOR TABLE NAME AT RUN TIME运行时表名的动态 SQL
【发布时间】:2015-01-15 10:13:35
【问题描述】:
create or replace procedure ankit
(table_name varchar2)
is 
begin
dbms_output.put('select NAME FROM '||table_name);
end;


begin
ankit('ITEM');
end;

我正在尝试执行上述命令,并且编译成功,但我无法看到相同的输出。

【问题讨论】:

  • 请不要对我们大喊大叫
  • :O 我什么时候喊出来的?
  • 欢迎来到 Stack Overflow!所有大写的单词都被认为是喊叫。
  • :D 那么我必须欢迎自己:) 谢谢。
  • SELECT 'It''s not shouting if it''s code!' "Pedantic Comment" FROM dual; 抱歉,我忍不住了。 :)

标签: sql oracle stored-procedures dynamic-sql


【解决方案1】:

如果你是在SQL*Plus做,那么SET SERVEROUTPUT ON是你首先需要做的。

如果您使用任何GUI based client tool,则选中选项以启用 dbms_output

然后使用,DBMS_OUTPUT.PUT_LINE

编辑:查看这个测试用例。

SQL> set serveroutput on;
SQL>
SQL> create or replace procedure ankit
  2  (table_name varchar2)
  3  is
  4  BEGIN
  5  dbms_output.put_line('select NAME FROM '||table_name);
  6  END;
  7  /

Procedure created.

SQL>
SQL> begin
  2  ankit('ITEM');
  3  end;
  4  /
select NAME FROM ITEM

PL/SQL procedure successfully completed.

SQL>

【讨论】:

    【解决方案2】:

    您必须在 SQL * PLUS

    中运行代码之前启用输出

    set serveroutput on;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-05
      • 2011-04-10
      • 2012-11-22
      • 2021-05-09
      相关资源
      最近更新 更多