在函数内部调用过程

时间:2013-11-20 21:09:48

标签: sql-server tsql stored-procedures sql-server-2012

我正在尝试将程序和功能结合起来,以了解有关它们的更多信息。

我有一个名为customer的表格,列数很少(我将使用的列是sal)。

我创建了一个函数来检查谁的工资都低于25000.如果上面的情况呈现行,那么我从我的函数调用该过程。

该过程更新salsal = 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   ')'附近的语法不正确。

有人可以解释一下我在代码或概念中做了什么错误吗?

1 个答案:

答案 0 :(得分:1)

您无法直接从用户定义的函数调用存储过程。

How to call a stored procedure from a user defined function In SQL Server 2000