0

SQL Server 2008 でストアド プロシージャを作成しようとすると、次のエラーが発生します。

メッセージ 156、レベル 15、状態 1、手順 usp_UpdateDistribiutionList、行 12 キーワード「AS」付近の構文が正しくありません。

アドバイスできますか?

ストアド プロシージャ コード:

USE LogDB
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE usp_UpdateDistribiutionList 
-- Add the parameters for the stored procedure here
@distId INT,
@DistEmails varchar(max)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
UPDATE [NotificationDistribution] AS dist
SET dist.emailCC = @DistEmails
WHERE dist.DistributionID = @distId
END

2 番目の質問:

パラメータを使用してdist.@columnNameのような列名を取得することは可能ですか?

4

2 に答える 2

1

UPDATE を次のように変更します。

UPDATE [NotificationDistribution]
SET emailCC = @DistEmails
WHERE DistributionID = @distId

動的にしたい場合:

CREATE PROCEDURE usp_UpdateDistribiutionList 
-- Add the parameters for the stored procedure here
@distId INT,
@DistColumn varchar(max),
@DistValue varchar(max)
AS
BEGIN


    SET NOCOUNT ON;

    DECLARE @SQL AS NVARCHAR(MAX)

    SET @SQL = 
    N'UPDATE [NotificationDistribution]
    SET ' + QuoteName(@DistColumn ) + ' = @DistValue 
    WHERE DistributionID = @distId'

    EXECUTE sp_executesql 
    @SQL,
    N'@DistValue  varchar(max), @distId INT',
    @DistValue  = @ColumnValue,
    @distId = @distId

END
于 2013-09-08T10:23:39.683 に答える