想写一个可以判断某个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 
------解决方案--------------------  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 
------解决方案--------------------  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  '+STR(@Return)+ '=count(*) FROM  ' + @TableName +  ' WHERE 1=1 AND  ' + @FieldName +  '= ' ' ' + @FieldValue +  ' ' ' '     
  	EXEC (@QueryString)   
 RETURN @Return 
 END