标签:说明 float ansi back master string 字段 ber exe
前言: 在ORACLE数据库的SQL*PLUS里面有个DES(DESCRIBE)命令,它可以返回数据库所存储对象的描述,如下所示
SQL> DESC STUDENT_SCORE
Name Type Nullable Default Comments
---------------- ---------- -------- ------- --------
STUDENT_NO NUMBER(10) 学号
CHINESE_SCORE NUMBER Y 语文成绩
ENGLISH_SCORE NUMBER Y 英语成绩
MATH_SOCRE NUMBER Y 数学成绩
PHYSICAL_SCORE NUMBER Y 物理成绩
SPORTS_SCORE NUMBER Y 体育成绩
CHEMICAL_SCORE NUMBER Y 化学成绩
BIOLOGICAL_SCORE NUMBER Y 生物成绩
DESC可以获取表、视图等的字段名、字段类型、以及字段注释等信息。在开发过程中,这个命令非常实用,方便,也是使用频率比较高的命令,在MS SQL中没有这个命令,倒是有个sp_help命令,也比较方便,获取的信息甚至比DESC命令还多,但是它有个缺陷,不能获取字段的注释信息,有时候给你来一堆你不想关注的信息。下面我们我们来创建一个存储过程,模拟实现DESC命令的功能以及定制一些你想要的功能。希望这个存储过程能方便大家的工作。初版代码如下:
接下来,我们新建一张表来看看效果如何,视图,存储过程、自定义函数就不大战篇幅去展示了,一个例子就OK了,有兴趣的,自己试试
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF EXISTS(SELECT * FROM sysobjects WHERE id=OBJECT_ID(N‘Employee‘) AND type=‘U‘)
DROP TABLE dbo.Employee;
GO
CREATE TABLE Employee
(
Employee_ID INT IDENTITY(1,1) ,
Employee_Name NVARCHAR(12) ,
Sex SMALLINT DEFAULT(1),
Department_ID INT ,
Salary FLOAT ,
WorkYear INT ,
CONSTRAINT PK_Employee PRIMARY KEY(Employee_ID)
);
EXEC sys.sp_addextendedproperty @name=N‘MS_Description‘, @value=N‘员工编号‘ , @level0type=N‘SCHEMA‘,@level0name=N‘dbo‘, @level1type=N‘TABLE‘,@level1name=N‘Employee‘, @level2type=N‘COLUMN‘,@level2name=N‘Employee_ID‘
GO
EXEC sys.sp_addextendedproperty @name=N‘MS_Description‘, @value=N‘员工姓名‘ , @level0type=N‘SCHEMA‘,@level0name=N‘dbo‘, @level1type=N‘TABLE‘,@level1name=N‘Employee‘, @level2type=N‘COLUMN‘,@level2name=N‘Employee_Name‘
GO
EXEC sys.sp_addextendedproperty @name=N‘MS_Description‘, @value=N‘性别‘ , @level0type=N‘SCHEMA‘,@level0name=N‘dbo‘, @level1type=N‘TABLE‘,@level1name=N‘Employee‘, @level2type=N‘COLUMN‘,@level2name=N‘Sex‘
GO
EXEC sys.sp_addextendedproperty @name=N‘MS_Description‘, @value=N‘部门编号‘ , @level0type=N‘SCHEMA‘,@level0name=N‘dbo‘, @level1type=N‘TABLE‘,@level1name=N‘Employee‘, @level2type=N‘COLUMN‘,@level2name=N‘Department_ID‘
GO
EXEC sys.sp_addextendedproperty @name=N‘MS_Description‘, @value=N‘薪水‘ , @level0type=N‘SCHEMA‘,@level0name=N‘dbo‘, @level1type=N‘TABLE‘,@level1name=N‘Employee‘, @level2type=N‘COLUMN‘,@level2name=N‘Salary‘
GO
EXEC sys.sp_addextendedproperty @name=N‘MS_Description‘, @value=N‘工龄‘ , @level0type=N‘SCHEMA‘,@level0name=N‘dbo‘, @level1type=N‘TABLE‘,@level1name=N‘Employee‘, @level2type=N‘COLUMN‘,@level2name=N‘WorkYear‘
GO
EXEC sys.sp_addextendedproperty @name=N‘MS_Description‘, @value=N‘员工信息表‘ , @level0type=N‘SCHEMA‘,@level0name=N‘dbo‘, @level1type=N‘TABLE‘,@level1name=N‘Employee‘
CREATE TRIGGER TR_Employee_Salary ON Employee
AFTER INSERT
AS
DECLARE @Salary FLOAT;
SELECT @Salary = Salary FROM INSERTED;
IF (@Salary < 0)
BEGIN
RAISERROR(‘The Salary Small than 0 ‘,10,1);
ROLLBACK TRANSACTION;
END
GO
CREATE VIEW V_Employee
AS
SELECT Employee_ID, Employee_Name, WorkYear FROM Employee
EXEC sys.sp_addextendedproperty @name=N‘MS_Description‘, @value=N‘员工信息表‘ , @level0type=N‘SCHEMA‘,@level0name=N‘dbo‘, @level1type=N‘VIEW‘,@level1name=N‘V_Employee‘
EXEC sys.sp_addextendedproperty @name=N‘MS_Description‘, @value=N‘给用户批量赋权限的存储过程‘ , @level0type=N‘SCHEMA‘,@level0name=N‘dbo‘, @level1type=N‘PROCEDURE‘,@level1name=N‘sp_authorize_right‘
执行存储过程,你可以获取表Employee的基本信息了,如下所示
标签:说明 float ansi back master string 字段 ber exe
原文地址:http://www.cnblogs.com/zhangyingai/p/7082479.html