1
この質問はthis oneの後に続きます。テーブル値のパラメータを参照するときにスカラー変数を宣言する必要があります
以下SQL作品:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Update_Repair_Details]
@RepairID BIGINT,
@NewDetails NewDetails READONLY
AS
BEGIN
SET NOCOUNT ON;
DELETE FROM Repair_Details
WHERE RepairID = @RepairID
INSERT INTO Repair_Details
SELECT *, GETDATE()
FROM @NewDetails
END
しかしRepairID
がユーザー定義テーブル型の最初の列であるため、追加のパラメータとして渡す理由はありません。
は、このように私が書いた:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Update_Repair_Details]
@NewDetails NewDetails READONLY
AS
BEGIN
SET NOCOUNT ON;
DELETE FROM Repair_Details
WHERE RepairID = @NewDetails.RepairID
INSERT INTO Repair_Details
SELECT *, GETDATE()
FROM @NewDetails
END
エラーを引き起こす:以前のバージョンにはないながら
Must declare the scalar variable "@NewDetails"
は、なぜこれがエラーを持っているのでしょうか?
私はこの答えをよりよく理解したいと思います:あなたは
IN
、EXISTS
またはJOIN
を使用することができます。 AはRepair_Detailsの代名詞ですか?Bは@NewDetailsの代名詞ですか?しかし、私が代用をすると、OPと同じエラーが出ます。 AとBが果たす役割を説明してください。 – SezMe私はちょうど "FROM句でJOINでテーブル値のパラメータを使用するときには、別名を付けなければなりません..."というように、AとBはエイリアスの役割を果たします。 – SezMe
@SezMeはい、それらはテーブルエイリアスです。同じエラーが出ていますか?それは変です。 'NewDetails'タイプの定義を投稿してください – Lamak