这个参数用于指定一个表名,也就是说存储过程内部根据传入的参数查询指定的表。不知道如何写。下面的代码是我用来表达意思的,无法执行。希望大家帮我看看,正确的应该怎么写呀?
create procedure Myproc1(tablename in varchar2)
begin
select * from tablename
end执行又该怎么样呢?

解决方案 »

  1.   


    EXEC Myproc1('tablename')?
      

  2.   

    ORACLE 返回数据可以使用游标
    你那个在SQL SERVER上是可以执行的
      

  3.   

    给你一个例子,根据传入的表名返回表的记录数:create procedure Myproc1(tablename in varchar2, nums OUT numberAS 
    begin 
    EXECUTE IMMEDIATE 'select COUNT(*) from '||tablename INTO nums;
    end ;
    /SET SERVEROUTPUT ON
    DECLARE
      l_tablename VARCHAR2(30);
      l_nums NUMBER;
    BEGIN
      l_tablename := 'USER_TABLES';
      Myproc1(l_tablename, l_nums);
      --下面一行显示l_nums
      DBMS_OUTPUT.PUT_LINE(l_nums);
    END;
    /