CREATE OR REPLACE PROCEDURE select_mz(PID CHAR)
IS
BEGIN
SELECT * FROM T_DM_MZ WHERE mz_code=PID;END;这么写不行吗,告诉我缺少INTO,但我就是想取所有字段的内容,该怎么办?

解决方案 »

  1.   

    这种select语句必须带into关键字的,你要想显示所有字段的能容可以这样写
     
     CREATE OR REPLACE PROCEDURE select_me(PID CHAR)
     IS
     va T_DM_MZ%rowtype;
     BEGIN
     SELECT * INTO va FROM T_DM_MZ WHERE mz_code=PID;
     END; 这样在va里就有了所有的字段内容。
      

  2.   

    那我这么写完了,在PL/SQL里怎么调呢?
      

  3.   

    procedure里的selelct后必须跟into关键字,在PLSQL DEV里选择你想调试的存储过程,然后右键选择test即可调试
      

  4.   

    稍改下一楼的代码,将va作为传出参数CREATE OR REPLACE PROCEDURE select_me(PID in CHAR,va out T_DM_MZ%rowtype) 
    IS  
    BEGIN 
    SELECT * INTO va FROM T_DM_MZ WHERE mz_code=PID; 
    END; 重编译后,执行
    declare
    v T_DM_MZ%rowtype;
    begin
    select_me(输入一个pid值,v);
    dbms_output.put_line(v.co1||' '||v.col2..选择几个需要打印的字段);
    end;
      

  5.   

    Oracle不像mssql,存储过程里面不允许直接有select 需要用游标或者type