Sybase Oracle SQL 存储过程的创建和执行

Sybase 存储过程的创建和执行

--返回值为int的存储过程
create proc testReturn
@tname varchar(12) ,
@tid int output
as
begin
set @tid = (select testid from Mytest where testname=@tname)
return
end


--返回值为varchar的存储过程
create proc testReturnT
@tid int ,
@tname varchar(12) output
as 
begin 
set @tname = (select testname from Mytest where testid=@tid)
return
end
 

--可以正确执行
declare @tid int 
exec testReturn 'testname', @tid output
select @tid
 

--本意是想直接输出输出参数
declare @tname varchar(12)
exec @tname = testReturnT 3,@tname output
select @tname 
--异常:Implicit conversion from datatype 'INT' to 'VARCHAR' is not allowed.  Use the CONVERT function to run this query.

--正确的执行方法 
declare @tname varchar(12)
declare @tid int 
exec @tid = testReturnT 3,@tname output
select @tid
select @tname

--正确执行
declare @tname varchar(12) 
exec testReturnT 3,@tname output
select @tname 

--注意:Sybase存储过程执行之后 返回值的存储过程成功与否的Int值
 

Oracle存储过程的创建和执行

--创建
create PROCEDURE testReturn
(tid  in  number ,
tname out NOCOPY varchar2 )
as
begin
select testname into tname from testtable where testid =tid;
end testReturn;

SQL存储过程的创建和执行

--创建
CREATE PROCEDURE procReturn
@tid int ,
@tname varchar(12) output
AS
    select @tname = testname from test1 where testid=@tid
RETURN


--执行
exec procReturn 2,@tname  output
posted @ 2012-05-23 18:24  水目之痕  阅读(3277)  评论(1编辑  收藏  举报