テーブル名とレコードIDの2つのパラメータをとるストアドプロシージャを作成しようとしています。varchar値をデータ型intに変換するときに変換に失敗しましたが、何も変換しません。
指定されたID(@FormID
)のレコードを、指定された名前(@TableName
)のテーブルから戻す必要があります。
私はこのエラーを取得する:
Conversion failed when converting the varchar value 'SELECT * FROM [Form12_AuditLog] WHERE [FormID] = ' to data type int."
私はデータ型intに何かを変換しようとしていないよので、私は本当に問題を理解することはできません。 SQLに渡さ
パラメータは次のとおりです。
@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