想写一个可以判断某个ID在其它表里有没有被用的函数,但一直不成功,各位有空看看吗?
运行时提示有借。说找不到存储过程,好像exec xxx就是执行一个外部的存储过程,但其实用函数能不能做到我想做的东西呢?
用法:
select dbo.Func_UsingInAnotherTable('ta_user','user_id','100000000001','')
其实就是要找在ta_user这个表里,有没有列user_id等于100000000001的记录。有的话就证明就个值已经被用了。
函数:
ALTER FUNCTION [dbo].[Func_UsingInAnotherTable]
(
@TableName nvarchar (250),
@FieldName nvarchar (250),
@FieldValue nvarchar (250),
@SearchCriteria nvarchar(4000)
)
RETURNS NUMERIC(18)
AS
BEGIN
DECLARE @QueryString nvarchar(4000)
DECLARE @Return as int
SET @QueryString = 'SELECT @Return=count(*) FROM ' + @TableName + ' WHERE 1=1
AND ' + @FieldName + '=''' + @FieldValue + '''
'
if @SearchCriteria!=''
BEGIN
set @QueryString = @QueryString + @SearchCriteria
END
EXEC @QueryString
RETURN @Return
END