Ich habe eine Master-Tabelle „Reparaturen“ und eine Detailtabelle „RepairDetails“ Ich versuche, ein Verfahren zu schreiben beid Tabellen zu aktualisieren, wenn ich die entsprechenden Parameter aus meiner Anwendung senden. Hier ist meine SQL:Verstehen SQL-Prozedur Fehler nicht
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[UpdateRepair]
@RepairID bigint,
@TypeID bigint = NULL,
@Directions nvarchar(3000) = NULL,
@NewDetails NewDetails READONLY
AS
BEGIN
SET NOCOUNT ON;
UPDATE Repairs
SET
TypeID = ISNULL(@TypeID, TypeID),
Directions = ISNULL(@Directions, Directions),
LastUpdate = SYSDATETIME()
WHERE RepairID = @RepairID;
IF @NewDetails IS NOT NULL UpdateRepairDetails;
END
wo „NewDetails“ ist ein benutzerdefinierter Tabellentyp und „UpdateRepairDetails“ ist eine andere gespeicherte Prozedur, die @RepairID und @NewDetails als Parameter übernimmt.
Ich habe einen Fehler und eine Frage. Die Fehlermeldung lautet:
Must declare the scalar variable "@NewDetails"
, die ich nicht verstehe, weil sie definiert ist.
Und meine Frage ist: Werden die Parameter „@RepairID“ und „@NewDetails“ werden automatisch auf die „UpdateRepairDetails“ Prozedur übergeben. Wenn nicht, was ist der richtige Ansatz, um dies zu erreichen?
Es heißt, @ NewDetails ist keine skalare Variable, nicht, dass es nicht definiert ist. Ist 'NewDetails' ein Tabellentyp? – Andomar
@Andomar Der Satz unter dem Code beantwortet Ihre Frage. – SezMe