为什么select语句在oracle中执行时不向我显示表?

为什么select语句在oracle中执行时不向我显示表?,oracle,oracle11g,Oracle,Oracle11g,我是oracle的新手。我已经有了一个表tempash。 因此,我创建了一个过程来查看这个表的数据。 因此,我创建了以下过程: create or replace procedure offc.temp_sel(data1 varchar2) is var1 varchar2(4000); BEGIN var1:='select * from offc.temp'||data1; EXECUTE IMMEDIATE var1; end; 所以,我执行了这个声明,但它没有向我显

我是oracle的新手。我已经有了一个表
tempash
。 因此,我创建了一个过程来查看这个表的数据。 因此,我创建了以下过程:

create or replace procedure offc.temp_sel(data1 varchar2) is
   var1 varchar2(4000);
BEGIN
 var1:='select * from  offc.temp'||data1;
   EXECUTE IMMEDIATE var1;
 end;
所以,我执行了这个声明,但它没有向我显示任何东西

 exec offc.temp_sel('ash');

我的过程中没有任何编译错误。但是为什么select语句不向我显示该过程的数据?

尝试添加out参数

create or replace procedure offc.temp_sel(data1 varchar2,result out sys_refcursor) 
is

BEGIN

 open result for 'select * from  offc.temp'||data1;
 end;


SQL> var rc refcursor
SQL> execute offc.temp_sel('ash',:rc)

PL/SQL procedure successfully completed.

SQL> print rc

您需要将SELECT语句的结果保存到变量中。执行SELECT*..时,应将结果放入记录类型,但由于结果集包含多行,因此变量需要是记录表

为了不容易出错,记录表需要与表源结构完全相同

CREATE OR REPLACE PROCEDURE OFFC.TEMP_SEL(DATA1 VARCHAR2) IS

    VAR1 VARCHAR2(4000);

    TYPE T_RESULT IS TABLE OF offc.temp%ROWTYPE;
--  defined the new type based on the structure of table TEMP from schema OFFC

    v_result t_result;
--  define a variable of that type.

BEGIN
    var1:='select * from  offc.temp'||data1;

    EXECUTE IMMEDIATE VAR1 BULK COLLECT INTO V_RESULT;
--  collect he result into the new variable

    FOR I IN 1 ..v_result.count
    LOOP
        dbms_output.put_line(v_result(i).<<column_name from temp offc.table>>);
    end loop;
--  loop through the variable(table of records) and display its content.
--  you need to replace the  << ... >> with the name of your column from source tabel that you want to display.

 end;
最好的,
Mikcutu

要查看表格数据,通常使用
SELECT
语句。你试过了吗
select*from offc.tempASH
@KarkiAshwin程序不会输出任何内容,除非您对其进行编码
executeimmediate
不会对
select
语句执行任何操作,除非它们附带
into
子句。也许您正在寻找这样的结果:看起来您的过程接受了两个参数,但您只传递了一个。是的,我的错,我忘记了第一个参数,更新了答案。您的
结果
ref游标似乎没有在过程中被引用。非常感谢。。有人贬低了你。。我刚刚投了赞成票
set serveroutput on;
execute temp_sel( 'ash');