2017-10-09 150 views
0

存储过程我的SQL Server是问题而将SQL Server存储过程,Oracle存储过程

ALTER PROCEDURE myproc 

@iii NVARCHAR(255) 
AS 
BEGIN 
select * from dbo.users where (first_name = @iii OR @iii = ''); 
END; 

虽然

运行它

exec myproc '' 

获取所有记录

但在oracle中

CREATE OR REPLACE PROCEDURE myproc (fname IN STRING, name1 OUT STRING) AS 
BEGIN 
SELECT "first_name" INTO name1 FROM "users" WHERE ("first_name" = fname OR fname = ''); 
END; 

但通过''Parameter Not Found Data执行它。

如何获取所有数据?

回答

0

您必须声明输出变量,

declare 
    --declare the output variable 
    v_output varchar2(100); 
begin 
    -- call it 
    myproc('King', v_output); 
    -- print it 
    dbms_output.put_line(v_output); 
end; 

您可以也宣告一个例外,因为如果没有任何价值的输出变量结束,然后它会返回一个错误太

例外:

CREATE OR REPLACE PROCEDURE myproc (fname IN STRING 
            , name1 OUT STRING) AS 

    BEGIN 

    select First_name 
     into name1 
     from hr.employees x 
    where x.last_name = fname 
     and rownum = 1; 

    EXCEPTION 
    when others then 
    name1 := null; 
    END;