CREATE PROCEDURE countm
(
      @qtype varchar(100),
      @ndxishu  nvarchar(100),
      @result     int output
)
 AS
   declare @s  nvarchar(4000)
set  @s=N' select count(*) from ' +@qtype+ ' where 难度系数 = '+@ndxishu
exec sp_executesql @s,N'@result int output',@result output
select @result
GO
两个参数需要的值在数据库里都是汉字
提示  列名 '容易' 无效 (即ndxishu)

解决方案 »

  1.   

    CREATE PROCEDURE countm
    (
          @qtype varchar(100),
          @ndxishu  nvarchar(100),
          @result int output
    )
    ASdeclare @s nvarchar(4000)
    set @s=N'select @result=count(*) from ' +@qtype+ ' where 难度系数 = '''+@ndxishu+''''
    exec sp_executesql @s,N'@result int output',@result output
    select @result
    GO--这样呢?
      

  2.   

    --楼主试一下create table a(难度系数 varchar(10))
    insert into a select 'a'
    goCREATE PROCEDURE countm
    (
          @qtype varchar(100),
          @ndxishu  nvarchar(100),
          @result int output
    )
    ASdeclare @s nvarchar(4000)
    set @s=N'select @result=count(*) from ' +@qtype+ ' where 难度系数 = '''+@ndxishu+''''
    exec sp_executesql @s,N'@result int output',@result output
    select @result
    GOdeclare @result int
    exec countm 'a','a',@result output
    select @resultdrop proc countm
    drop table a
      

  3.   

    drop proc countm 找不到countm存储过程
      

  4.   

    把这句去掉就可以了
    你这个写的好复杂啊
    create table a(难度系数 varchar(10))
    insert into a select 'a'
    go
    declare @result int
    exec countm 'a','a',@result output
    select @result
    drop table a
    为什么运行一遍后,这些代码在存储过程里都找不到了
      

  5.   

    drop proc countm找不到就说明countm还没建立直接运行CREATE PROCEDURE countm
    (
          @qtype varchar(100),
          @ndxishu  nvarchar(100),
          @result int output
    )
    ASdeclare @s nvarchar(4000)
    set @s=N'select @result=count(*) from ' +@qtype+ ' where 难度系数 = '''+@ndxishu+''''
    exec sp_executesql @s,N'@result int output',@result output
    select @result
    GO建立存储过程然后调用
    declare @result int
    exec countm '表','字段值',@result output
    select @result
      

  6.   

    create table a(难度系数 varchar(10))
    insert into a select 'a'
    go
    declare @result int
    exec countm 'a','a',@result output
    select @result
    drop table a这些不是存储过程里的代码,是为了让你看结果,我写的测试数据。