SQL儲存過程呼叫標量值函式,儲存過程呼叫儲存過程

2021-06-01 11:34:54 字數 1878 閱讀 8457

一、存 儲過程呼叫標量值函式

先建乙個標量值函式,如

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函式的時候可能會發現,有些函式是在錶值函式下寫的有些是在標量值下寫的,區別是錶值函式只能返回乙個表,標量值函式可以返回基型別。舉個例子,當使用者刪除乙個節點的時候,...