sql - 存储过程 将变量值设置为单个列

标签 sql sql-server-2008 stored-procedures

我有一个表结构

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 并将其发送到函数并计算新的 Salary。我尝试过开发几个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.

最佳答案

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

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

关于sql - 存储过程 将变量值设置为单个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13624743/

相关文章:

sql - 返回 2 列不匹配的记录

sql - 在 Postgresql 中授予动态数据库名称

java - 在 jooq 中设置 NULL 值

sql-server - SQL Server : Maximum character length of object names

sql-server - 存储过程与表值函数的 OUTPUT 子句

php - MySQL 存储过程终止超过 10 秒的连接

mysql - 错误“1038 Out of sort memory, consider increasing sort buffer size

sql - GETDATE() 和 DateTime.Now 一样昂贵吗?

sql-server-2008 - 如何在sql server中分配大的连接字符串

mysql - 存储过程/函数列表 Mysql 命令行