导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

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

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中调试
忘各位大哥赐教.
...全文
24 点赞 收藏 6
写回复
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
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告