CREATE PROCEDURE dbo.JC
    @ID nvarchar(8),
    @STR nvarchar(18),
    @数量 nvarchar(8),
@AN nvarchar(3) --要检查的Ax
AS
declare @state int,@s nvarchar(4000)
set @s='
 if exists(SELECT ID FROM 记录  WHERE '+@AN+'=@数量 AND ID=@ID )
set @state=1 
else
set @state=0 
'
exec sp_executesql @s
,N'@ID nvarchar(8),@数量 nvarchar(8),@state int out'
,@ID,@数量,@state
select @state
GO--调用(检查A1)
exec dbo.JC @ID=1,@STR='str',@数量=100,@AN='A1'

解决方案 »

  1.   

    1.
    A1,A2,A3-A50 是字段嗎﹖2.
    你的表結構在哪里﹖
      

  2.   

    CREATE PROCEDURE dbo.JC
        @ID nvarchar(8),
        @STR nvarchar(18),
        @数量 nvarchar(8),
        @AX   nvarchar(20)AS
    declare @state int
    declare @sql nvarchar(4000)set @sql = ' if exists(SELECT ID FROM 记录  WHERE '+@AX+'=@数量 AND ID=@ID )
    set @state=1 
    else
    set @state=0  select @state'
    EXEC sp_executesql @sql ,N'@state INT OUTPUT',@state INT OUTPUT
    SELECT @state'
      

  3.   

    --少传一个参数,呵呵
    CREATE PROCEDURE dbo.JC
        @ID nvarchar(8),
        @STR nvarchar(18),
        @数量 nvarchar(8),
        @AX   nvarchar(20)AS
    declare @state int
    declare @sql nvarchar(4000)set @sql = ' if exists(SELECT ID FROM 记录  WHERE '+@AX+'='+@数量+' AND ID=@ID )
    set @state=1 
    else
    set @state=0  select @state'
    EXEC sp_executesql @sql ,N'@state INT OUTPUT',@state INT OUTPUT
    SELECT @state'
      

  4.   

    不行啊,我试了,,输入的数值是相同的,还是输出
    @RETURN_VALUE = 0
      

  5.   

    ALTER PROCEDURE dbo.JC
        @ID nvarchar(8),
        @数量 nvarchar(8),
        @AX   nvarchar(20)AS
    declare @state int
    declare @sql nvarchar(4000)set @sql = ' if exists(SELECT ID FROM 记录  WHERE '+@AX+'='+@数量+' AND ID='+@ID+' )
    set @state=1 
    else
    set @state=0 
    select @state'
    EXEC sp_executesql @sql ,N'@state INT OUTPUT'
    SELECT @state
    显示 需要参数 @state,但未提供该参数。