SQL存储过程调用标量值函数,存储过程调用存储过程 |
您所在的位置:网站首页 › sql如何创建表值函数 › 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 #tempTable3、第三种方法:声明一个变量,用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
以上纯属是个人的一些感想,也没认真的测试过,有错的话,请大家指正。
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |