我正在嘗試結合程序和函數來了解更多關於它們的內容。調用函數內部函數
我有一個名爲customer
的表格,列數很少(我將使用的列爲sal
)。
我創建了一個函數來檢查誰的工資都低於25000.如果上述情況呈現行,然後我從我的函數調用過程。
該過程更新sal
(sal = sal + 1000
)並返回rowcount。
create procedure Taxrefund2(@taxr int) as
begin
update customer
set Balance=Balance + @taxr
return @@rowcount
end
create function taxfunc()
as
begin
declare @salary table(sal decimal(10,2))
set @salary = (select sal from customer)
declare @x int=0
if @salary < 25000
exec @x = taxrefund2(1000)
return @x
print 'the no of customers who got tax redeemption is :' +cast(@x as varchar(10))
當我編譯我的功能我得到的錯誤:
消息156,級別15,狀態1,過程taxfunc,行中的關鍵字 '作爲' 近2
不正確的語法。Msg 102,Level 15,State 1,Procedure taxfunc,Line 8
'1000'附近的語法不正確。消息178,級別15,狀態1,過程taxfunc,第9行
帶有返回值的RETURN語句不能在此上下文中使用。Msg 102,Level 15,State 1,Procedure taxfunc,Line 10
')'附近的語法不正確。
有人能解釋我在代碼或概念中做了什麼錯誤嗎?
不能調用SQL Server用戶定義的函數內的存儲過程。而且你不能在一個函數內改變數據庫的狀態,但是你在代碼中試圖做什麼可以通過一個存儲過程來實現:) –
爲什麼你有SQL Server和MySql的標籤? –
[可以在用戶定義的函數中調用存儲過程嗎?]可能的重複?(http://stackoverflow.com/questions/12843788/is-it-possible-to-call-a-stored-procedure-in - 一個用戶定義的函數) –