一、存 儲過程呼叫標量值函式
先建乙個標量值函式,如
create function [dbo].[f_num]
(@a nvarchar(50)
)returns nvarchar(50)
asbegin
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
asset @version=2
end
在呼叫儲存過程裡,寫上
declare @version int
exec p_getmaxversion 'baseclient',@version output
那@version就被賦上了值2
2、建立乙個臨時表
create proc getusername
asbegin
select 'username'
endcreate 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
以上純屬是個人的一些感想,也沒認真的測試過,有錯的話,請大家指正。
SQL 標量值函式的呼叫
呼叫 ms sql 標量值函式,應該在函式前面加上 dbo.否則會報 不是可以識別的 內建函式名稱 錯誤。例如 declare whichdb tinyint select whichdb dbo.user getwhichdb 1 看看是哪個資料庫的 另外,標量值函式就相當於乙個變數,而不是乙個表...
sql的標量值函式例子
1.分割字串,處理某個字元第幾次出現獲取後面的值use ef go object userdefinedfunction dbo f substr script date 10 27 2014 20 36 10 set ansi nulls on goset quoted identifier on...
SQL錶值函式和標量值函式的區別
原文 sql錶值函式和標量值函式的區別 寫sql儲存過程經常需要呼叫一些函式來使處理過程更加合理,也可以使函式復用性更強,不過在寫sql函式的時候可能會發現,有些函式是在錶值函式下寫的有些是在標量值下寫的,區別是錶值函式只能返回乙個表,標量值函式可以返回基型別。舉個例子,當使用者刪除乙個節點的時候,...