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

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.
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

エラーは明らかです、あなたは2つを組み合わせることができます

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を含めて、2つを組み合わせることができます。

Select @X = value FROM table両方Select value From Tableではなく、どちらかを実行します

于 2012-11-29T11:41:00.497 に答える