SQL Server执行脚本时,出现“数据库中已存在名为的‘XXX'对象。”的报错?

1:脚本如下:
USE PXSCJ
GO
CREATE PROCEDURE dbo.do_insert
AS
INSERT INTO XSB VALUES('091201','陶伟',1,'1990-03-05','软件工程',50,NULL);
GO
CREATE PROCEDURE do_action @X bit,@STR CHAR(8) OUTPUT
AS
BEGIN
EXEC do_insert
IF @X=0
BEGIN
UPDATE XSB SET 姓名='刘英',性别=0 WHERE 学号='091201'
SET @STR='修改成功'
END
ELSE
IF @X=1
BEGIN
DELETE FROM XSB WHERE 学号='091201'
SET @STR='删除成功'
END
END
GO

2:执行脚本出现以下报错:
消息 2714,级别 16,状态 3,过程 do_insert,第 3 行
数据库中已存在名为 'do_insert' 的对象。
消息 2714,级别 16,状态 3,过程 do_action,第 14 行
数据库中已存在名为 'do_action' 的对象。

初学SQL Server,请指教下,谢谢~

这个问题很简单
CREATE PROCEDURE dbo.do_insert

注意你的CREATE 如果是第一次执行就使用CREATE ,如果你不是第一次执行,把这里改为 ALTER CREATE 为创建 ALTER为更新。明白了吗?或者在起始位置增加
IF OBJECT_ID ( 'do_insert', 'P' ) IS NOT NULL
DROP PROCEDURE do_insert;
GO
IF OBJECT_ID ( 'do_action', 'P' ) IS NOT NULL
DROP PROCEDURE do_action;
GO
这个是先查询有没有,有则删除的语句,这样就不会报错了,不过不建议这样做,每次都删除再重新预编译比较慢
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-04-12
就是重名了,你把你存储过程换个名就好了
比如
CREATE PROCEDURE dbo.do2_insert

CREATE PROCEDURE do2_action

你要是修改存储过程的话

ALTER PROCEDURE dbo.do_insert

ALTER PROCEDURE do_action

就不用换名了
第2个回答  2013-04-12
先执行以下脚本,删除原来的对象。
USE PXSCJ
GO
IF OBJECT_ID ( 'do_insert', 'P' ) IS NOT NULL
DROP PROCEDURE do_insert;
GO
IF OBJECT_ID ( 'do_action', 'P' ) IS NOT NULL
DROP PROCEDURE do_action;
GO
第3个回答  2013-04-12
CREATE or replace PROCEDURE dbo.do_insert

CREATE or replace PROCEDURE do_action @X bit,@STR CHAR(8) OUTPUT

这2行这么改一下
第4个回答  2013-04-12
那就说明此数据库存在,重新命名在建库
相似回答