--sample create proc A as begin exec B 参数,输出参数 out --select 输出参数 end
--sample create proc A as begin exec B 参数,输出参数 out --select 输出参数 end
----------------------存储过程共有三种返回值------------------- /*(一)、参数返回值@parm2; (二)、过程返回值return 100; (三)、数据集返回值select * from table1 where age = @parm1 请问,如何得到三类返回值? */ create table table1( name varchar(30), age integer, primary key(name, age) )create procedure proc1 @parm1 integer, @parm2 varchar(30) output as select @parm2 = 'zhongguo' select * from table1 where age = @parm1 return 100--(一)、参数返回值@parm2; declare @re varchar(30) exec proc1 1,@re out select 返回结果=@re--(二)、过程返回值return 100; declare @re int,@parm2 varchar(30) exec @re=proc1 1,@parm2 out select 返回结果=@re--(三)、数据集返回值select * from table1 where age = @parm1 --定义返回结果保存的临时表(因为是返回记录集,所以要用临时表) --调用返回结果 --declare @re varchar(30) --insert #re exec proc1 1,@re out select * into #re from OPENROWSET('SQLOLEDB', 'SERVER=zhou;uid=sa;pwd=zhou;Database=pubs','SET FMTONLY OFF;SET NOCOUNT ON declare @re varchar(30) exec proc1 ''1'',@re out') as a --显示结果 select * from #re --处理完成后删除临时表 drop table #re
对于这个返回SELECT的值可否改进以下呀.我想这样用select * from Tbl_User WHERE UserName IN (EXEC Procla Prams)我想这样使用这个记录集..如果有答案的话我尽快结贴 3Q--------
如果要使用过程来返回的话,那么,你只有实验一下使用动态SQL语句来实行。打个比方,抄了一个。 /*--建立函数---*/ CREATE FUNCTION funNewCode(@Code CHAR(3),@IfUp int) RETURNS varchar(6) AS begin declare @i varchar(6) set @i=@code if(@IfUp=1) begin update 表 set Points = Points+1 from Emp = @Code end
return(@i) end go /*---在select语句中使用函数----*/ select NichName from 表 where Emp=dbo.funNewCode('001',1)
create proc A
as
begin
exec B 参数,输出参数 out
--select 输出参数
end
create proc A
as
begin
exec B 参数,输出参数 out
--select 输出参数
end
/*(一)、参数返回值@parm2;
(二)、过程返回值return 100;
(三)、数据集返回值select * from table1 where age = @parm1
请问,如何得到三类返回值?
*/
create table table1(
name varchar(30),
age integer,
primary key(name, age)
)create procedure proc1
@parm1 integer,
@parm2 varchar(30) output
as
select @parm2 = 'zhongguo'
select * from table1 where age = @parm1
return 100--(一)、参数返回值@parm2;
declare @re varchar(30)
exec proc1 1,@re out
select 返回结果=@re--(二)、过程返回值return 100;
declare @re int,@parm2 varchar(30)
exec @re=proc1 1,@parm2 out
select 返回结果=@re--(三)、数据集返回值select * from table1 where age = @parm1
--定义返回结果保存的临时表(因为是返回记录集,所以要用临时表)
--调用返回结果
--declare @re varchar(30)
--insert #re exec proc1 1,@re out
select * into #re from OPENROWSET('SQLOLEDB',
'SERVER=zhou;uid=sa;pwd=zhou;Database=pubs','SET FMTONLY OFF;SET NOCOUNT ON declare @re varchar(30) exec proc1 ''1'',@re out') as a
--显示结果
select * from #re
--处理完成后删除临时表
drop table #re
3Q--------
/*--建立函数---*/
CREATE FUNCTION funNewCode(@Code CHAR(3),@IfUp int)
RETURNS varchar(6)
AS
begin
declare @i varchar(6)
set @i=@code
if(@IfUp=1)
begin
update 表 set Points = Points+1 from Emp = @Code
end
return(@i)
end
go
/*---在select语句中使用函数----*/
select NichName from 表 where Emp=dbo.funNewCode('001',1)