SQL Server执行脚本时,出现“数据库中已存在名为的‘XXX'对象。”的报错?
1:脚本如下:USEPXSCJGOCREATEPROCEDUREdbo.do_insertASINSERTINTOXSBVALUES('091201','陶伟',1,'1...
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,请指教下,谢谢~ 展开
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,请指教下,谢谢~ 展开
5个回答
展开全部
这个问题很简单
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
这个是先查询有没有,有则删除的语句,这样就不会报错了,不过不建议这样做,每次都删除再重新预编译比较慢
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
这个是先查询有没有,有则删除的语句,这样就不会报错了,不过不建议这样做,每次都删除再重新预编译比较慢
展开全部
就是重名了,你把你存储过程换个名就好了
比如
CREATE PROCEDURE dbo.do2_insert
CREATE PROCEDURE do2_action
你要是修改存储过程的话
ALTER PROCEDURE dbo.do_insert
ALTER PROCEDURE do_action
就不用换名了
比如
CREATE PROCEDURE dbo.do2_insert
CREATE PROCEDURE do2_action
你要是修改存储过程的话
ALTER PROCEDURE dbo.do_insert
ALTER PROCEDURE do_action
就不用换名了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先执行以下脚本,删除原来的对象。
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
CREATE or replace PROCEDURE dbo.do_insert
CREATE or replace PROCEDURE do_action @X bit,@STR CHAR(8) OUTPUT
这2行这么改一下
CREATE or replace PROCEDURE do_action @X bit,@STR CHAR(8) OUTPUT
这2行这么改一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那就说明此数据库存在,重新命名在建库
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询