SzenarioDatensatz kann nicht von einfügen benutzerdefinierte in Tabelle
ich ein Geschäft Verfahren geschaffen, in dem habe ich eine benutzerdefinierte Tabelle als Parameter nehme dann Zunächst werde ich, wenn Role_ID
überprüfen und Form_ID
ist vorhanden, dann werde ich meine vorhandene Tabelle aktualisieren. Ansonsten werde ich in bestehende Tabelle einfügen.
Problem
Nach INSERT-Abfrage in meinem Speicher Prozedur schreibt ich unter Fehlern bekam während meines Speichers Prozedur zu ändern.
Msg 137, Ebene 16, Status 1, Prozedur SP_SETUP_ROLES_RIGHTS_SAVE_AND_UPDATE, Zeile 17 muss die skalare Variable "@Temp" deklarieren. Msg 137, Ebene 16, Status 1, Prozedur SP_SETUP_ROLES_RIGHTS_SAVE_AND_UPDATE, Zeile 17 Muss die Skalarvariable "@Temp" deklarieren.
Unten ist mein SP-Code:
CREATE TYPE _ROLERIGHTSSCHEMA as Table (
_Role_ID int,
_Form_ID int,
_Form_Name varchar(100),
_Can_View bit,
_Can_Edit bit,
_Can_Prepare_By bit,
_Can_Change_Status_By bit,
_Prepared_By_ID int,
_Prepared_Date datetime
)
ALTER PROCEDURE SP_SETUP_ROLES_RIGHTS_SAVE_AND_UPDATE
(@Temp _ROLERIGHTSSCHEMA ReadOnly)
AS
BEGIN
IF EXISTS(SELECT * FROM ROLE_RIGHTS WHERE Role_ID = @Temp.Role_ID AND Form_ID = @Temp.Form_ID)
BEGIN
Update Role_Rights
set Can_View = t._Can_View,
Can_Edit = t._Can_Edit,
Can_Prepare_By = t._Can_Prepare_By,
Can_Change_Status_By = _Can_Change_Status_By,
Modified_By_ID = 0,
Modified_Date = GETDATE()
From @Temp t
WHERE Role_Rights.Role_ID = t._Role_ID and Role_Rights.Form_ID = t._Form_ID
END
ELSE
BEGIN
INSERT INTO Role_Rights (
Role_ID,
Form_ID,
Can_View,
Can_Edit,
Can_Prepare_By,
Can_Change_Status_By,
Prepared_By_ID,
Prepared_Date
) SELECT _Role_ID, _Form_ID, _Can_View, _Can_Edit, _Can_Prepare_By, _Can_Change_Status_By, 0, GETDATE() FROM @Temp
END
END
funktioniert sollten Sie berücksichtigen nicht die SP_ Präfix. Dies kann zu Leistungsproblemen und anderen interessanten Herausforderungen führen. Wählen Sie entweder ein anderes Präfix oder noch besser, überhaupt kein Präfix. http://sqlperformance.com/2012/10/t-sql-queries/sp_prefix –