2

SQL Server 2008 R2を使用していて、パラメーター(id)を使用して2つのテーブルから削除するストアドプロシージャを作成したいと思います。

これはストアドプロシージャです。

CREATE PROCEDURE [dbo].[sp_deleteDecision]
@ID int
AS

DELETE FROM [dbo].[tblDecisionInvolvement] as di
WHERE di.DecisionId = @ID
DELETE FROM [dbo].[tblDecision] as d
WHERE d.Id =@ID

GO

これは、作成しようとしたときに発生するエラーです。

メッセージ156、レベル15、状態1、プロシージャsp_deleteDecision、6行目
キーワード「as」の近くの構文が正しくありません。
メッセージ156、レベル15、状態1、プロシージャsp_deleteDecision、8行目
キーワード「as」の近くの構文が正しくありません。

DELETE FROMに変更することに注意してください

SELECT * FROM 

できます。

パラメータを使用して何かを削除することも可能ですか?

Ty。

4

1 に答える 1

11

ステートメントのその部分にエイリアスを導入することは許可されていDELETEません。また、この場合はエイリアスは必要ありません。

USE ChessDb01
GO
CREATE PROCEDURE [dbo].[sp_deleteDecision]
@ID int

AS

DELETE FROM [dbo].[tblDecisionInvolvement]
WHERE DecisionId = @ID
DELETE FROM [dbo].[tblDecision]
WHERE Id =@ID

GO

より複雑なクエリの場合は、エイリアスを使用することをお勧めしますが、(紛らわしいことに)2つのDELETE句があり、2番目の句でのみエイリアスを導入できることに注意してください。 FROM

DELETE FROM di
FROM [dbo].[tblDecisionInvolvement] di
            inner join
      AnotherTable tab
           on
              di.Column = tab.Column2
WHERE tab.Column99 = @Value
于 2012-08-07T12:46:16.960 に答える