我有Table structure
Empid Int,
EmpName Nvarchar,
Salary Numeric(18,2),
DeptNumber
我有2个参数的函数。 as:
ALTER Function [dbo].[GetTotalPrice]
(
@Salary int,
@DeptNumber int
)
RETURNS int
AS
BEGIN
Declare @TotalSalary int
Select @TotalSalary=@Salary+@DeptNumber
return @TotalSalary
End
我的查询是如何开发一个需要的存储过程
存储过程中的每个salary
和DeptNumber
都会将其发送到函数并计算新的工资。我已经尝试开发了几个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.
答案 0 :(得分:2)
您使用相同的SELECT
将数据放入变量并从存储过程返回结果集,您不能在同一语句中同时执行这两项操作。
ALTER Proc [dbo].[S7]
AS
BEGIN
Select EmpId,EmpName, Salary=dbo.GetTotalPrice(salary,DeptNumber) from dbo.EmpInf
end
答案 1 :(得分:0)
试试这个
Select EmpId,EmpName,
salary=@salary,DeptNumber=@DeptNo,Salary=dbo.GetTotalPrice(@salary,@DeptNo)
答案 2 :(得分: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
您可以将两者结合使用,将@XXX和XXX放在同一个Select查询中。
您可以Select @X = value FROM table
或Select value From Table
,而不是两者