求简单存储过程?

guo_0727 2011-05-23 04:32:32
CREATE TABLE [dbo].[t_user](
[vID] [varchar](20) COLLATE Chinese_PRC_CI_AS NOT NULL CONSTRAINT [DF_t_user_vID] DEFAULT (''),
[vName] [varchar](20) COLLATE Chinese_PRC_CI_AS NOT NULL CONSTRAINT [DF_t_user_vName] DEFAULT (''),
[vGrade] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL CONSTRAINT [DF_t_user_vGrade] DEFAULT (''),
[dBrithday] [smalldatetime] NOT NULL,
[bSex] [bit] NOT NULL CONSTRAINT [DF_t_user_bSex] DEFAULT ((0)),
[vReMark] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NULL CONSTRAINT [DF_t_user_iSum] DEFAULT ((0))
) ON [PRIMARY]

CREATE TABLE [dbo].[t_details](
[iAutoID] [int] IDENTITY(1,1) NOT NULL,
[vID] [varchar](20) COLLATE Chinese_PRC_CI_AS NOT NULL CONSTRAINT [DF_t_details_vID] DEFAULT (''),
[vChinese] [float] NULL CONSTRAINT [DF_t_details_vChinese] DEFAULT ((0)),
[vMaths] [float] NULL CONSTRAINT [DF_t_details_vMaths] DEFAULT ((0)),
[vEnglish] [float] NULL CONSTRAINT [DF_t_details_vEnglish] DEFAULT ((0)),
CONSTRAINT [PK_t_details] PRIMARY KEY CLUSTERED
(
[iAutoID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]



alter PROCEDURE Updat_tb @Is_Insert int,
@vID varchar(20),
@vName2 varchar(20),
@vGrade varchar(10),
@Dbrithday varchar(20) ,
@bSex bit,
@dChinese float,
@dMaths float,
@dEnglish float,
@vRemark varchar(200)
as
if @Is_Insert =1
begin
INSERT INTO [t_user]([vID],[vName],[vGrade],[dBrithday],[bSex],[vReMark])
VALUES(@vID,@vName2,@vGrade,@Dbrithday,@bSex,@vRemark)
INSERT INTO [t_details]([vID],[vChinese],[vMaths],[vEnglish])
VALUES(@vID, @dChinese,@dMaths,@dEnglish)
end
Else
Delete [t_user] where [vID] =@vID
Delete [t_details] where [vID] =@vID
INSERT INTO [t_user]([vID],[vName],[vGrade],[dBrithday],[bSex],[vReMark])
VALUES(@vID,@vName2,@vGrade,@Dbrithday,@bSex,@vRemark)
INSERT INTO [t_details]([vID],[vChinese],[vMaths],[vEnglish])
VALUES(@vID, @dChinese,@dMaths,@dEnglish)

我执行 exec Updat_tb 1,'aaa','b','mm','02/23/2011',1,80,90.5,70,'aaaaa'
为什么在[t_details]表中会插入两条相同的记录..
应该在[t_details]表中只会插入一条记录..
...全文
61 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yeyerl 2011-05-23
  • 打赏
  • 举报
回复
gw6328 2011-05-23
  • 打赏
  • 举报
回复
友情帮顶。
yibey 2011-05-23
  • 打赏
  • 举报
回复

Else
begin
Delete [t_user] where [vID] =@vID
Delete [t_details] where [vID] =@vID
INSERT INTO [t_user]([vID],[vName],[vGrade],[dBrithday],[bSex],[vReMark])
VALUES(@vID,@vName2,@vGrade,@Dbrithday,@bSex,@vRemark)
INSERT INTO [t_details]([vID],[vChinese],[vMaths],[vEnglish])
VALUES(@vID, @dChinese,@dMaths,@dEnglish)
end



else
如果没加入beginend来控制范围的话,默认只有一句代码是else的字句,你这里也就是

else
begin
Delete [t_user] where [vID] =@vID
end
Delete [t_details] where [vID] =@vID
INSERT INTO [t_user]([vID],[vName],[vGrade],[dBrithday],[bSex],[vReMark])
VALUES(@vID,@vName2,@vGrade,@Dbrithday,@bSex,@vRemark)
INSERT INTO [t_details]([vID],[vChinese],[vMaths],[vEnglish])
VALUES(@vID, @dChinese,@dMaths,@dEnglish)




所以后面的语句无论你判断结果是什么都会执行的
唵嘛呢叭咪吽 2011-05-23
  • 打赏
  • 举报
回复
不止两条吧
快溜 2011-05-23
  • 打赏
  • 举报
回复

--加begin end
Else
begin
Delete [t_user] where [vID] =@vID
Delete [t_details] where [vID] =@vID
INSERT INTO [t_user]([vID],[vName],[vGrade],[dBrithday],[bSex],[vReMark])
VALUES(@vID,@vName2,@vGrade,@Dbrithday,@bSex,@vRemark)
INSERT INTO [t_details]([vID],[vChinese],[vMaths],[vEnglish])
VALUES(@vID, @dChinese,@dMaths,@dEnglish)
end

34,575

社区成员

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

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