Stored procedures 如何编写具有多个输出参数的过程?
我创建了这个过程,但这是抛出错误Stored procedures 如何编写具有多个输出参数的过程?,stored-procedures,sql-server-2008-r2,Stored Procedures,Sql Server 2008 R2,我创建了这个过程,但这是抛出错误 CREATE PROCEDURE GetSurrenderPolicyDetails @policy_Id int, @name nvarchar(50) output, @policy_Amount Decimal(10,2) output, @premiumPaidTillDate Decimal(10,2) output AS BEGIN SET NOCOUNT ON; SELECT @name = Policy_D
CREATE PROCEDURE GetSurrenderPolicyDetails
@policy_Id int,
@name nvarchar(50) output,
@policy_Amount Decimal(10,2) output,
@premiumPaidTillDate Decimal(10,2) output
AS
BEGIN
SET NOCOUNT ON;
SELECT
@name = Policy_Details.Name,
@policy_Amount = Insurance_Policy_Details.Policy_Amount,
@premiumPaidTillDate = SUM(Payment_Premium_Details.Premium_Amount)
FROM
Policy_Details
INNER JOIN
Payment_Premium_Details ON (Policy_Details.Policy_Id = Payment_Premium_Details.Policy_Id)
INNER JOIN
Insurance_Policy_Details ON (Policy_Details.Ins_Id = Insurance_Policy_Details.Ins_Id)
WHERE
Policy_Details.Policy_Id = @policy_Id;
END
GO
错误是
列“Policy_Details.Name”在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中
问题不在于输出参数,而在于连接子句;相反,请尝试以下方法:
INNER JOIN Insurance_Policy_Details
ON Policy_Details.Ins_Id = Insurance_Policy_Amount.Ins_Id
INNER JOIN Payment_Premium_Details
ON Policy_Details.Policy_Id = Payment_Premium_Details.Policy_Id
错误很明显:您的
SELECT
中有一个SUM()
聚合,因此,您需要对SELECT
语句中的其他列使用groupby
:
SELECT
@name = Policy_Details.Name,
@policy_Amount = Insurance_Policy_Details.Policy_Amount,
@premiumPaidTillDate = SUM(Payment_Premium_Details.Premium_Amount)
FROM
Policy_Details
INNER JOIN
Payment_Premium_Details ON (Policy_Details.Policy_Id = Payment_Premium_Details.Policy_Id)
INNER JOIN
Insurance_Policy_Details ON (Policy_Details.Ins_Id = Insurance_Policy_Details.Ins_Id)
WHERE
Policy_Details.Policy_Id = @policy_Id;
GROUP BY
Policy_Details.Name,
Insurance_Policy_Details.Policy_Amount,
什么错误?我们看不到你的屏幕,也看不到你的心思——你必须准确地告诉我们错误是什么!有一点非常明显:在第一次
内部联接上没有联接条件-您想在哪个列上联接该表???在进行更改后,它仍然会给我错误信息