CREATE PROCEDURE sp_Exam_GetChoice
(
@str varchar(255)

ASDECLARE @indextable table(id int identity(1,1),nid int)// 建立一个索引表set @str1="INSERT INTO @indextable(nid) SELECT ChoiceID FROM Exam_Choice WHERE "+ @str
exec(@str1)//此举有误,因为在第二个存春过程中@indextable未声明。
我想能不能把已经声明的@indextable直接传入,
不管怎样,大家帮我把第二个存储过程执行的结果放到声明的indextable表吧.
大家帮忙,谢谢!

解决方案 »

  1.   

    set @str1="INSERT INTO " + @indextable(nid) + " SELECT ChoiceID FROM Exam_Choice WHERE "+ @str
      

  2.   

    被你带沟里了
    set @str1='INSERT INTO @indextable(nid) SELECT ChoiceID FROM Exam_Choice WHERE '+ @str
      

  3.   

    换成单引号,也不行,
    因为在第二个存储过程中它认为@indextable未声明
    你要是 用
    set @str1="DECLARE @indextable table(id int identity(1,1),nid int) INSERT INTO @indextable(nid) SELECT ChoiceID FROM Exam_Choice WHERE "+ @str
    exec(@str1)
    就没错了,
    可是打印在页面上是空表,好像它没把数据填充到第一个@indextable(父?),而是填充到第二个存储过程的@indextable(子?)了,
    的确挺难
      

  4.   

    用临时表吧create table #indextable table(id int identity(1,1),nid int)set @str1='INSERT INTO #indextable(nid) SELECT ChoiceID FROM Exam_Choice WHERE '+ @str
    exec(@str1)