Ich versuche, eine gespeicherte Prozedur zu schreiben, die zwei Parameter akzeptiert: Tabellenname und Datensatz-ID.Konvertierung fehlgeschlagen beim Konvertieren des Varchar-Werts in den Datentyp int - aber ich konvertiere nichts
Es muss einen Datensatz mit einer angegebenen ID (@FormID
) aus der Tabelle mit dem angegebenen Namen (@TableName
) zurückgeben.
ich diesen Fehler:
Conversion failed when converting the varchar value 'SELECT * FROM [Form12_AuditLog] WHERE [FormID] = ' to data type int."
ich nicht wirklich das Problem verstehen, weil ich nicht zu konvertieren, etwas zu Datentyp int versuchen.
Die Parameter für die SQL übergeben werden:
@FormID = 88
@TableName = Form12_AuditLog
SQL:
USE [MyDatabase]
GO
/****** Object: StoredProcedure [dbo].[GetAuditLogByFormID] Script Date: 20/12/2016 5:50:53 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[GetAuditLogByFormID]
@TableName varchar(50),
@FormID integer
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ActualTableName AS varchar(255)
SELECT @ActualTableName = QUOTENAME(TABLE_NAME)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = @TableName
DECLARE @sql AS NVARCHAR(MAX)
SELECT @sql = 'SELECT * FROM ' + @ActualTableName + ' WHERE [FormID] = ' + @FormID + ';'
EXEC(@sql)
END