SQL存储过程调用标量值函数,存储过程调用存储过程


一、存 储过程调用标量值函数

先建一个标量值函数,如

CREATE FUNCTION [dbo].[F_Num]
(
@a nvarchar(50)
)
RETURNS nvarchar(50)
AS
BEGIN
declare @m nvarchar(50)
select @m=@a+'aad'
return @m
END

接下来
在存储过程中可以直接如下调用:

select Title,Content,(select dbo.F_Num(Content)) as a from tb_News where ID='BH100001'

或者:

declare @char nvarchar(20)
set @char=dbo.F_Num('ddddadqqqqq')

二、存储过程调用存储过程,写法一般是(个人总结的,不对的请见谅)

1、在被调用的存储过程里,我个人觉得应该写一个输出参数,如:

create PROCEDURE [dbo].[P_GetMaxVersion]  
@tablename varchar(50),
 @version int output
AS
set @version=2
end

在调用存储过程里,写上

 declare @Version int  
 exec P_GetMaxVersion 'BaseClient',@Version output  

那@Version就被赋上了值2

2、创建一个临时表

create proc GetUserName
as
begin
    select 'UserName'
end

Create table #tempTable (userName nvarchar(50))
insert into #tempTable(userName)
exec GetUserName
select #tempTable

3、第三种方法:声明一个变量,用exec(@sql)执行(注:这种方法我也没测试过,我是在网上摘抄的,以备用)

declare @rsql varchar(250)
        declare @csql varchar(300)
        declare @rc nvarchar(500)
        declare @cstucount int
        declare @ccount int
        set @rsql='(select Classroom_id from EA_RoomTime where zc='+@zc+' and xq='+@xq+' and T'+@time+'=''否'') and ClassroomType=''1'''
        --exec(@rsql)
        set @csql='select @a=sum(teststucount),@b=sum(classcount) from EA_ClassRoom where classroom_id in '
        set @rc=@csql+@rsql
        exec sp_executesql @rc,N'@a int output,@b int output',@cstucount output,@ccount output--将exec的结果放入变量中的做法
        --select @csql+@rsql
        --select @cstucount


 

 

以上纯属是个人的一些感想,也没认真的测试过,有错的话,请大家指正。


 

 


 

 


 

 

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值