--建表
CREATE TABLE PkMgr (   
TableName varchar2(50 byte),
ColumnName varchar2(50 byte),
PkValue integer
);
--存储过程
create or replace procedure GetPkId(TbName in varchar2,ClName in varchar2,PkId out INTEGER ) is
begin
 update pkmgr set PkValue=PkValue+1 where tablename=TbName  and columnname=ClName;
select pkvalue into PkId from pkmgr  where tablename=TbName and columnname=ClName;
commit;
end GetPkId;
我在sqlplus和pl sql中怎样调用这个存储过程呢?怎样把out的字段给传出来打印出来!

解决方案 »

  1.   


    1: 我在sqlplus和pl sql中怎样调用这个存储过程呢?
    EXEC PROCEDURE_NAME;2: 怎样把out的字段给传出来打印出来
    DBMS_OUTPUT.PUT_LINE...
      

  2.   

    DBMS_OUTPUT.PUT_LINE('');
    PL SQL Dev有一个查看OutPut窗口.
    for c in (select * from PkMgr)
     loop
       DBMS_OUTPUT.PUT_LINE('OutPut:'||c.PkValue);
     end loop;
      

  3.   

    关键是我要把PkId out INTEGER 值出来
      

  4.   

    不太明白你的意思 .
    Integer可以用函数,to_char()转换成字符.
      

  5.   

    你的PkID已经是Out形式,直接取就可以了,
    declare
      MyPkID PkMgr.PkID%type;
    begin
      GetPkId(table_name,column_name,MyPkID);
      DBMS_OUTPUT.PUT_LINE('OutPut:'||to_char(MyPkID)); 
    end;
      

  6.   

    DECLARE
      V_OUTPUT NUMBER;
    BEGIN
      GETPKID(&TABLE_NAME,&COLUMN_NAME,V_OUTPUT);
      DBMS_OUTPUT.PUT_LINE('OUT PUT PKID VALUE IS: '||V_OUTPUT);
    END;