SQLSerer 中如何写存储过程
1、设计存储过程
几乎任何可写成批处理的 Transact-SQL 代码都可用于创建存储过程。
2、存储过程的设计规则
存储过程的设计规则包括:
CREATE PROCEDURE 定义本身可包括除下列 CREATE 语句以外的任何数量和
类型的 SQL 语句,存储过程中的任意地方都不能使用下列语句:
可在存储过程中创建其它数据库对象。可以引用在同一存储过程中创建的对象,前
提是在创建对象后再引用对象。
可以在存储过程内引用临时表。
如果在存储过程内创建本地临时表,则该临时表仅为该存储过程而存在;退出该存
储过程后,临时表即会消失。
如果执行调用其它存储过程的存储过程,那么被调用存储过程可以访问由第一个存
储过程创建的、包括临时表在内的所有对象。
如果执行在远程 Microsoft® SQL Server™ 2000 实例上进行更改的远程存储
过程,则不能回滚这些更改。远程存储过程不参与事务处理。
存储过程中参数的最大数目为 2100。
存储过程中局部变量的最大数目仅受可用内存的限制。
根据可用内存的不同,存储过程的最大大小可达 128 MB。
3、限定存储过程内的名称
在存储过程内部,如果用于诸如 SELECT 或 INSERT 这样的语句的对象名没有限定
用户,那么用户将默认为该存储过程的所有者。在存储过程内部,如果创建存储过程的用户
没有限定 SELECT、INSERT、UPDATE 或 DELETE 语句中引用的表名,那么通过该存
储过程对这些表进行的访问将默认地受到该过程的创建者权限的限制。
如果有其他用户要使用存储过程,则用于语句 ALTER TABLE、CREATE TABLE、
DROP TABLE、TRUNCATE TABLE、CREATE INDEX、DROP INDEX、UPDATE
STATISTICS 和 DBCC 的对象名必须用该对象所有者的名称限定。例如,Mary 拥有
表 marytab,如果她希望其他用户能够执行使用该表的存储过程,必须在该表用于上述某
一条语句时对其表名进行限定。
此规则是必需的,因为运行存储过程时将解析对象的名称。如果未限定 marytab,
而 John 试图执行该过程,SQL Server 将查找 John 所拥有的名为 marytab 的表。
4、加密过程定义
评论0
最新资源