列名と値の 2 つの値を受け入れるストアドを作成しようとしています。次に、渡された列名に値が渡されたレコードが存在するかどうかを確認します。私は次のことを試しました
CREATE PROCEDURE p_HasActiveReference
@pi_colName varchar(100)
,@pi_colValue varchar(100)
AS
BEGIN
SET NOCOUNT ON
declare @sql varchar(1000)
set @sql = 'IF EXISTS(SELECT TOP 1 p.PaymentId
FROM Payments p
WHERE ' + @pi_colName + ' = ' + @pi_colValue + 'AND Active = 1)
SELECT ''True'' AS RETVAL
ELSE
SELECT ''False'' AS RETVAL'
exec(@sql)
END
ただし、常にこのエラーが発生します
varchar 値 'InternalOr' をデータ型 int に変換するときに変換に失敗しました。
次の手順を呼び出すと
p_HasActiveReference 'InternalOrgCode', '10110'
internalOrgCode
列は価値があるvarchar(10)
私は SQL の専門家ではないので、その手法を使用して達成する必要があることが可能かどうかさえわかりません!
ありがとう!