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

您所在的位置:网站首页 sql如何创建表值函数 SQL存储过程调用标量值函数,存储过程调用存储过程

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

2023-08-27 12:58| 来源: 网络整理| 查看: 265

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

先建一个标量值函数,如

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

 

 

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

 

 

 

 

 

 

 

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3