注册 登录
编程论坛 SQL Server论坛

存储过程,做了一半,不懂做了~~

一刀客 发布于 2007-11-26 13:33, 1460 次点击
创建一个添加新课程的存储过程,要求进行出错处理。然后对这个存储过程进行测试,确保该存储过程可以像预期那样插入新的课程记录,另外,也要测试这个存储过程的出错处理情况。
创建存储过程:
use stuinfo
go
create proc proc_insert
@c_number char(4),@c_name char(10),@teacher char(10),@hours int,@credit int
as
insert into t_course(c_number,c_name,teacher,hours,credit)
values([email=]'@c_number','@c_name','@teacher',@hours,@credit[/email])
go


执行存储过程:
exec proc_insert '11','C#','李娜',100,5


结果:
服务器: 消息 8152,级别 16,状态 9,过程 proc_insert,行 5
将截断字符串或二进制数据。
语句已终止。

所有参数的类型和长度完全和t_course表相同,为何会出错呢?
还有,要求进行出错处理,该怎么做
也要测试这个存储过程的出错处理情况,又该怎么做?
12 回复
#2
purana2007-11-26 13:37
insert into t_course(c_number,c_name,teacher,hours,credit)
values([email=]'@c_number','@c_name','@teacher',@hours,@credit[/email])
这是什么意思哇?
#3
一刀客2007-11-26 13:42
不是插入记录吗?
#4
purana2007-11-26 13:43
[email=]
[/email]
这些呢?.
#5
purana2007-11-26 13:45
你的@c_number ,@c_name ,@teacher ,@hours 既然是变量..那在使用时就不要加单引号.
use stuinfo
go
create proc proc_insert
@c_number char(4),@c_name char(10),@teacher char(10),@hours int,@credit int
as
insert into t_course(c_number,c_name,teacher,hours,credit)
values(@c_number,@c_name,@teacher,@hours,@credit)
go
#6
一刀客2007-11-26 13:52
回复 4# 的帖子
怪事 我没有打[email=] [/email]这些呀
它怎么会自己跑出来
#7
一刀客2007-11-26 13:59
按版主做成功了,版主真是高手呀
但还有进行处理出错呢?
create proc proc_insert
~~~~~
as
if(~~~)
begin
   insert into t_course(c_number,c_name,teacher,hours,credit)
   values(@c_number,@c_name,@teacher,@hours,@credit)
   print'插入记录成功'
end
esle
   print'插入记录失败'

if里面的条件该怎么写呀
#8
一刀客2007-11-26 14:03
不知道 用if~~~else 算不算进行出错处理
#9
purana2007-11-26 14:03
你想判断什么就怎么写啊..
我都不知道你要判断什么..我又怎么知道写什么..
#10
一刀客2007-11-26 14:08
题目要求进行出错处理,如果让版主来做,版主会怎么样做呢?
我真的不懂怎么样做~~~
#11
purana2007-11-26 14:10
insert之后判断一下@@error全局变量..如果不为0,则rollback tran
#12
一刀客2007-11-26 14:18
提醒得好~~
#13
baijian7102007-11-26 16:57
如果正常插入的话,@@error 应该等于0
1