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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM