关于存储过程中的参数问题!多谢各位大哥!

singledj 2003-12-20 09:35:33
我第一次使用SQL有一个小问题向大哥们请教:
create prco myproc
@firstdate varchar(10),
@lastdate varchar(10)
as
create table mytabletemp (hybh varchar(6),zje numeric(10,2))
create table mytabletemp1 (hybh varchar(6),zje numeric(10,2))
go
insert into mytabletemp
select hybh,sum(zje)
from his101
where jysj<@fristdate
group by hybh
go
insert into mytabletemp1
select hybh,sum(zje)
from his101
where jysj<@lastdate
group by hybh
运行该过程会提示:变量@fristdate和@lastdate没有定义。
如果在过程中不使用GO语句,则不会出现这个问题。但是会提示:
无效的对象mytabletemp和mytabletemp1.
我在SQL7.0+WINDOWS2000SERVER中调试
忘各位大哥赐教.
...全文
55 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xhwly 2003-12-28
  • 打赏
  • 举报
回复
你定义的是@firstdate
而程序中用的是@fristdate

另外,在存储过程中 CREATE TALBE 后,不必用go.

如果你的表是临时的,在表名前加个#,


singledj 2003-12-28
  • 打赏
  • 举报
回复
不行的,在存储过程中如果不用GO语句,CREATE TALBE不能被正确使用,即建不了表。如果用了GO语句则在编译存储过程的时候GO语句后面的语句都不能被编译。这是SQL SERVER的一个BUG,还是另有解决办法?
txlicenhe 2003-12-20
  • 打赏
  • 举报
回复
create proc myproc
@firstdate varchar(10),
@lastdate varchar(10)
as
begin
create table mytabletemp (hybh varchar(6),zje numeric(10,2))
create table mytabletemp1 (hybh varchar(6),zje numeric(10,2))

insert into mytabletemp
select hybh,sum(zje)
from his101
where jysj<@firstdate
group by hybh

insert into mytabletemp1
select hybh,sum(zje)
from his101
where jysj<@lastdate
group by hybh
end
-狙击手- 2003-12-20
  • 打赏
  • 举报
回复
shuiniu,
shuiniu 2003-12-20
  • 打赏
  • 举报
回复
--改
create prco myproc
@firstdate varchar(10),
@lastdate varchar(10)
as
begin tran
if object_id('mytabletemp') is null
create table mytabletemp (hybh varchar(6),zje numeric(10,2))
if object_id('mytabletemp1') is null
create table mytabletemp1 (hybh varchar(6),zje numeric(10,2))
insert into mytabletemp
select hybh,sum(zje)
from his101
where jysj<@fristdate
group by hybh
if @@error <> 0
goto err
insert into mytabletemp1
select hybh,sum(zje)
from his101
where jysj<@lastdate
group by hybh
if @@error <> 0
goto err
commit tran
return
err:
rollback tran
return
go
shuiniu 2003-12-20
  • 打赏
  • 举报
回复
create prco myproc
@firstdate varchar(10),
@lastdate varchar(10)
as
create table mytabletemp (hybh varchar(6),zje numeric(10,2))
create table mytabletemp1 (hybh varchar(6),zje numeric(10,2))
--go去掉
insert into mytabletemp
select hybh,sum(zje)
from his101
where jysj<@fristdate
group by hybh
--go去掉
insert into mytabletemp1
select hybh,sum(zje)
from his101
where jysj<@lastdate
group by hybh
go

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧