我正在尝试将程序和功能结合起来,以了解有关它们的更多信息。
我有一个名为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))
当我编译我的函数时,我收到错误:
Msg 156,Level 15,State 1,Procedure taxfunc,Line 2 关键字'as'附近的语法不正确。
Msg 102,Level 15,State 1,Procedure taxfunc,Line 8 '1000'附近的语法不正确。
Msg 178,Level 15,State 1,Procedure taxfunc,Line 9 带有返回值的RETURN语句不能在此上下文中使用。
Msg 102,Level 15,State 1,Procedure taxfunc,Line 10 ')'附近的语法不正确。
有人可以解释一下我在代码或概念中做了什么错误吗?
答案 0 :(得分:1)
您无法直接从用户定义的函数调用存储过程。
How to call a stored procedure from a user defined function In SQL Server 2000