Create procedure p1 (@v1 float,@v2 float,@date varchar(7),@c1 varchar(20),@c2 varcha(20)) 
as......
select *,IDENTITY(int,1,1) as myid
into #g from table1 where convert(char(7),date,120)=@date and id in (@c1,@c2)
..........................................
检查语法时,提示
服务器: 消息 137,级别 15,状态 2,行 5
必须声明变量 '@date'。
怎么回事,如何解决?存储过程的参数要怎么声明才行?

解决方案 »

  1.   

    Create procedure p1
    @v1 float,@v2 float,@date varchar(7),@c1 varchar(20),@c2 varcha(20)
    as......
      

  2.   

    谢谢fcua.....兄,确实是这个问题,但是我夹在中间的语句,只是一些清理垃圾数据的delete 语句,怎么和变量冲突了
      

  3.   

    完整语句:Create procedure p1 (@v1 float,@v2 float,@date varchar(7),@c1 varchar(20),@c2 varcha(20)) 
    asdelete from table1 where kid not in (select distinct kid from table2)select *,IDENTITY(int,1,1) as myid
    into #g from table1 where convert(char(7),date,120)=@date and id in (@c1,@c2)把中间的delete去掉就能通过语法检查,为什么?
      

  4.   

    查出来了,delete后面还有个go,去掉go就可以了,这是为什么?
      

  5.   

    加go以后,SQL会认为那是两个会话。后面那句话当然认不到变量了