[编写安全的SQLServer扩展存储过程]SQL Server 的扩展存储过程,其实就是一个普通的 Windows DLL,只不过按照某种规则实现了某些函数而已。近日在写一个扩展存储过程时,发现再写这类动态库时,还是有一些需要特别...+阅读
函数和存储过程对SQL SERVER来说有很大的区别:
1.在SQL SERVER2K以前,没有自定义函数UDF,只有系统函数。
2.无论系统函数和UDF,在系统启动是就进行编译并加载,所以UDF的效率比SP要高,SP只是在调用时才加载(扩展的存储过程除外)。
3.有些函数getdate,exec..都在UDF里不能用!
4.函数必须有返回值,SP则不一定。
5.函数可以包括在FROM子句中,SP则不可以。
6.在SQL SERVE2K中SP可以DEBUG,UDF不可以。 用户定义函数
函数是由一个或多个 Transact-SQL 语句组成的子程序,可用于封装代码以便重新使用。Microsoft® SQL Server™ 2000 并不将用户限制在定义为 Transact-SQL 语言一部分的内置函数上,而是允许用户创建自己的用户定义函数。
可使用 CREATE FUNCTION 语句创建、使用 ALTER FUNCTION 语句修改、以及使用 DROP FUNCTION 语句除去用户定义函数。每个完全合法的用户定义函数名 (database_name.owner_name.function_name) 必须唯一。
必须被授予 CREATE FUNCTION 权限才能创建、修改或除去用户定义函数。不是所有者的用户在 Transact-SQL 语句中使用某个函数之前,必须先给此用户授予该函数的适当权限。若要创建或更改在 CHECK 约束、DEFAULT 子句或计算列定义中引用用户定义函数的表,还必须具有函数的 REFERENCES 权限。
在函数中,区别处理导致删除语句并且继续在诸如触发器或存储过程等模式中的下一语句的 Transact-SQL 错误。在函数中,上述错误会导致停止执行函数。接下来该操作导致停止唤醒调用该函数的语句。
用户定义函数的类型
SQL Server 2000 支持三种用户定义函数:
标量函数
内嵌表值函数
多语句表值函数
存储过程
存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信息的工作容易得多。存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。
存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。
可以出于任何使用 SQL 语句的目的来使用存储过程,它具有以下优点:
可以在单个存储过程中执行一系列 SQL 语句。
可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。
存储过程在创建时即在服务器上进行编译,所以执行起来比单个 SQL 语句快。 存储过程可能单独完成一些内容,可以单独进行。
函数可以在试子中调用,比如可以进行一些计算等,不能单独执行。
以下为关联文档:
存储过程:轻松过滤SQLServer连接SQL Server数据库管理员需要时刻保持对服务器上连接的警惕。为了某种模式的应用,管理员需要监控这些连接;列出具有问题的连接,然后采取行动来进行修整;或者是在某个选中的连接...
SQLServer联机丛书:查看存储过程几个系统存储过程用系统表提供有关存储过程的信息。使用这些存储过程可以: 查看用于创建存储过程的 Transact-SQL 语句。这对于没有用于创建存储过程的 Transact-SQL 脚本文...
SQLServer联机丛书:删除存储过程删除存储过程不再需要存储过程时可将其删除。如果另一个存储过程调用某个已删除的存储过程,则 Microsoft SQL Server 2000 会在执行该调用过程时显示一条错误信息。但如果定...
用ASP调用SQLServer的视图和存储过程一、前言 ASP (Active Server Pages) 是服务器端的脚本编写环境,它由微软公司的IIS3.0以上版本支持。它可用来创建动态 Web 页或生成功能强大的 Web应用程序。ASP页是包括 HT...
SQLServer存储过程编程经验技巧SQLServer目前正日益成为WindowNT操作系统上面最为重要的一种数据库管理系统,随着 SQLServer2000的推出,微软的这种数据库服务系统真正的实现了在WindowsNT/2000系列操作系统一统天下的局面,在微软的操作...
plsql developer里怎么写存储过程和执行存储过程怎么查看存储过--建立测试数据: create table BOOK(编号 number(10),书名 varchar2(20),价格 varchar2(20)) insert into BOOK values(100,'aa','88.77') select * from BOOK --建立存储过程: c...
plsql存储过程如何调试1. 打开PL/SQL Developer如果 在机器上安装了PL/SQL Developer的话,打开PL/SQL Developer界面输入 用户名,密码和host名字,这个跟在程序中web.config中配置的完全相同,点击确定...
oracle怎么查看存储过程代码>sqlplus ([/][] | /) [AS SYSDBA | AS SYSOPER] | /NOLOGSQL >desc user_source;Name Null ? Type-- --------------------------------------- -------- ----------------...
DB2怎样创建存储过程CREATE PROCEDURE "DB2INST2"."SP_SF_GET_PRESC" (IN "V_GHXH" BIGINT, IN "V_RECORDSTATUS" SMALLINT, IN "V_TYPE" SMALLINT, IN "V_PRESCNO" BIGINT, IN "V_ISQX" SMALLINT, OUT "ERR_CO...