2

我有Table structure一个

Empid Int,
EmpName Nvarchar,
Salary Numeric(18,2),
DeptNumber

我有需要 2 个参数的函数。作为 :

ALTER Function [dbo].[GetTotalPrice] 
(
@Salary int,
@DeptNumber int
)
RETURNS int
AS
BEGIN
Declare @TotalSalary int
Select @TotalSalary=@Salary+@DeptNumber 
return @TotalSalary
End

而我的查询是我应该如何开发一个存储过程,它将每个salaryDeptNumber一个存储过程中,并将其发送到函数并计算一个新的薪水。我曾尝试开发几个 SP,但无法获得任何可能的解决方案。

ALTER Proc [dbo].[S7] 
AS
BEGIN
Declare @salary int
Declare @DeptNo int
Select EmpId,EmpName, @salary=salary,@DeptNo=DeptNumber,Salary=dbo.GetTotalPrice(@salary,@DeptNo) 
from dbo.EmpInf
end

当我尝试执行上面的代码时,它给出了以下错误:

A SELECT statement that assigns a value to a variable must not be combined with data-retrieval operations.
4

3 回答 3

2

您正在使用相同SELECT的方式将数据放入变量中并从存储过程返回结果集,您不能在同一条语句中同时执行这两种操作。

ALTER Proc [dbo].[S7] 
AS
BEGIN
Select EmpId,EmpName, Salary=dbo.GetTotalPrice(salary,DeptNumber) from dbo.EmpInf
end
于 2012-11-29T11:39:34.200 回答
0

尝试这个

 Select EmpId,EmpName,  
 salary=@salary,DeptNumber=@DeptNo,Salary=dbo.GetTotalPrice(@salary,@DeptNo) 
于 2012-11-29T11:34:18.953 回答
0

错误很明显,可以将两者结合起来

Declare @salary int
Declare @DeptNo int,
   @EmpId int, @EmpName varchar(50),
   @Salary int


Select @EmpId=EmpId, @EmpName=EmpName, @salary=salary,@DeptNo=DeptNumber,@Salary=dbo.GetTotalPrice(1000,'XXX') 
from dbo.EmpInf

Select @EmpId As EmpID, @EmpName As EmpName, @Salary As Salary

或者

Select EmpID, EmpName, Salary, dbo.GetTotalPrice(1000,'XXX') from dbo.EmpInf

您可以将两者结合起来,在同一个 Select 查询中使用 @XXX 和 XXX。

你要么做Select @X = value FROM tableOR Select value From Table,而不是两者

于 2012-11-29T11:41:00.497 回答