运行时表的名称的动态SQL

时间:2014-11-18 09:24:01

标签: sql oracle stored-procedures dynamic-sql

create or replace procedure ankit
(table_name varchar2)
is 
begin
dbms_output.put('select NAME FROM '||table_name);
end;


begin
ankit('ITEM');
end;

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

2 个答案:

答案 0 :(得分:0)

如果您是在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>

答案 1 :(得分:0)

在运行 SQL * PLUS

中的代码之前,必须先启用输出
  

set serveroutput on;