在sqlserver2005执行存储过程,为什么老是说必须声明标量变量@majorid??????@pagesize int,
@majorid nvarchar(50)SET @SQLSTR =N'SELECT TOP '+STR(@PageSize)+'* from Course where courseid=any(select courseid from teacher_course where majorid=@majorid) ORDER BY course.CourseID ASC'

解决方案 »

  1.   

    你把参数跟变量混了吧?你的@pageSize是作为变量、去拼接到SqlStr中的(也就是说目标SqlStr的值中并没有这个参数)。而@majorid则不是作为变量使用的,跑到目标SqlStr的值中作为参数去了。
      

  2.   

    我把它改成 
    SET @SQLSTR =N'SELECT TOP '+STR(@PageSize)+' * from Course where courseid=any(select courseid from teacher_course where teacher_course.majorid='+@majorid  执行结果              @majorid = N'0002',
    @PageIndex = 0,执行的时候又说     “'0002' 附近有语法错误。”我应该怎么改呢
      

  3.   

    SET @majorid = N'0002'
     此消息通过 【CSDN论坛 Winform测试版】 回复!
      

  4.   

    注意majorid字段的类型,另外any少了一个)
      

  5.   

    SET @SQLSTR =N'SELECT TOP '+STR(@PageSize)+' * from Course where courseid=any(select courseid from teacher_course where teacher_course.majorid='''+@majorid + ''')'修改成这样看有没有问题!!
      

  6.   

    我的@majorid是一个参数,作为参数传进去能否说得再详细一点呢