我正在尝试创建一个存储,它将接受两个值,一个列名和一个值。然后它将检查是否存在具有传入值的传入列名的记录。我试过以下
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 专家,所以我什至不确定使用该技术是否可以实现我需要实现的目标!
谢谢!