问答题
2分
下面程序段的功能是:在 数据库中判断是否存在名为my_proc的存储过程,若存在,则删除之,然后创建同名的存储过程,该存储过程的功能是向author_id、author_name、addre...
下面程序段的功能是:在 数据库中判断是否存在名为my_proc的存储过程,若存在,则删除之,然后创建同名的存储过程,该存储过程的功能是向author_id、author_name、address和telephone字段插入数据。阅读并回答以下问题:
USE bookdb GO
IF EXISTS(SELECT {blank} FROM Sysobjects
WHERE name=′my_proc′and type=′ P ′)
DROPPROC my_proc GO
CREATE PROC my_proc
@a int, @b char(8),@c char(50) {blank}
INSERT INTO author(author_id,author_name,address) VALUES(@a,@b,@c) GO
USE bookdb GO
IF EXISTS(SELECT {blank} FROM Sysobjects
WHERE name=′my_proc′and type=′ P ′)
DROPPROC my_proc GO
CREATE PROC my_proc
@a int, @b char(8),@c char(50) {blank}
INSERT INTO author(author_id,author_name,address) VALUES(@a,@b,@c) GO
参考解析: 【答案】
Name
as
【解析】在数据库中判断是否存在名为my_proc的存储过程,即从系统表中查询有没有和my_proc同名的过程,用"SELECT name FROM Sysobjects"表示。其中Sysobjects为系统表,保存当前数据库的对象,如约束、默认值、日志、规则、存储过程等。比较常用的字段为:
SysObjects (
Name sysname, --object 名称
id int, --object id
xtype char(2), -- object 类型
type char(2), -- Object 类型
uid smallint, -- object 所有者的ID
... --其他的字段不常用到。
)
创建过程的命令格式为:
CREATE PROC my_proc
@变量1,@变量2 AS{<sql_statement>[;][…n]}[;]
<sql_statement>::={[BEGIN]statements [END]}