仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 804|回复: 9
打印 上一主题 下一主题

[学习教程] MSSQL网页设计创立存储历程

[复制链接]
第二个灵魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:22:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
在执行崩溃恢复时,理解在一个数据库中的每一个表tbl_name对应的在数据库目录中的3个文件是很重要的:创立|存储历程在MSSQLServer2000中,创立一个存储历程有两种办法:一种是利用Transaction-SQL命令CreateProcedure,另外一种是利用图形化办理工具EnterpriseManager。用Transaction-SQL创立存储历程是一种较为疾速的办法,但关于初学者,利用EnterpriseManager更容易了解,更加复杂。
当创立存储历程时,必要断定存储历程的三个构成部分;

  • 一切的输出参数和传给挪用者的输入参数。
  • 被实行的针对数据库的操纵语句,包含挪用别的存储历程的语句;
  • 前往给挪用者的形态值,以指明挪用是晒故鞘О堋?/li>
12.2.1利用EnterpriseManager创立存储历程
依照下述步骤用EnterpriseManager创立一个存储历程:

  • 启动EnterpriseManager,登录到要利用的服务器。
  • 选择要创立存储历程的数据库,在左窗格中单击StoredProcedure文件夹,此时在右窗格中显现该数据库的一切存储历程,如2-1所示。
  • 右击StoredProcedure文件夹,在弹出菜单当选择NewStoredProcedure,此时翻开创立存储历程对话框,如2-2所示。
  • 输出存储历程注释。
  • 单击CheckSyntax,反省语法是不是准确。
  • 单击OK,保留。
  • 在右窗格中,右击该存储历程,在弹出菜单当选择Alltask,选择ManagePermissions,设置权限,如2-3所示。

12.2.2用CREATEPROCEDURE命令创立存储历程
经由过程使用CreateProcedure命令可以创立存储历程,在创立存储历程之前,应当思索到以下几个方面:

  • 在一个批处置中,CreateProcedure语句不克不及与别的SQL语句兼并在一同;
  • 数据库一切者具有默许的创立存储历程的权限,它可把该权限传送给别的的用户;
  • 存储历程作为数据库工具其定名必需切合定名划定规矩;
  • 只能在以后数据库中创立属于以后数据库的存储历程。
用CreateProcedure创立存储历程的语律例则以下:
CREATEPROC[EDURE]procedure_name[;number]
[{@parameterdata_type}
[VARYING][=default][OUTPUT]
][,...n]
[WITH
{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}]
[FORREPLICATION]
ASsql_statement[...n]

各参数的寄义以下:

  • procedure_name
    是要创立的存储历程的名字,它前面跟一个可选项number,它是一个整数,用来区分一组同名的存储历程。存储历程的定名必需切合定名划定规矩,在一个数据库中或对其一切者而言,存储历程的名字必需唯一。
  • @parameter
    是存储历程的参数。在CreateProcedure语句中,能够声明一个或多个参数。当挪用该存储历程时,用户必需给出一切的参数值,除非界说了参数的缺省值。若参数的情势以@parameter=value呈现,则参数的序次能够分歧,不然用户给出的参数值必需与参数列表中参数的按次坚持分歧。若某一参数以@parameter=value情势给出,那末别的参数也必需以该情势给出。一个存储历程最多有1024个参数。
  • Data_type
    是参数的数据范例。在存储过程当中,一切的数据范例包含text和image都可被用作参数。可是,游标cursor数据范例只能被用作OUTPUT参数。当界说游标数据范例时,也必需对VARING和OUTPUT关头字举行界说。对多是游标型数据范例的OUTPUT参数而言,参数的最年夜数量没无限制。
  • VARYING
    指定由OUTPUT参数撑持的了局集,仅使用于游标型参数。
  • Default
    是指参数的缺省值。假如界说了缺省值,那末即便不给出参数值,则该存储历程仍能被挪用。缺省值必需是常数,大概是空值。
  • OUTPUT
    标明该参数是一个前往参数。用OUTPUT参数能够向挪用者前往信息。Text范例参数不克不及用作OUTPUT参数。
  • RECOMPILE
    指明SQLServer其实不保留该存储历程的实行企图,该存储历程每实行一次都又要从头编译。
  • ENCRYPTION
    标明SQLServer加密了syscomments表,该表的text字段是包括有Createprocedure语句的存储历程文本,利用该关头字没法经由过程检察syscomments表来检察存储历程内容。
  • FORREPLICATION
    选项指了然为复制创立的存储历程不克不及在订购服务器上实行,只要在创立过滤存储历程时(仅当举行数据复制时过滤存储历程才被实行),才利用该选项。FORREPLICATION与WITHRECOMPILE选项是互不兼容的。
  • AS
    指明该存储历程将要实行的举措。
  • Sql_statement
    是任何数目和范例的包括在存储过程当中的SQL语句。
别的应当指出,一个存储历程的最年夜尺寸为128M,用户界说的存储历程必需创立在以后数据库中。
上面将给出几个例子,用来具体先容怎样创立包括有各类保存字的存储历程。





上面我们说了DML的闪回方案。但对于DDL却无能为力,对于大多数的DDL,即使是rowbase格式,二进制日志binlog中仍只记录语句本身。对于删表操作,只记录一个语句droptablet。仅凭这句话,无法还原表的数据。
冷月葬花魂 该用户已被删除
沙发
发表于 2015-1-19 09:50:49 | 只看该作者
还不是性能有问题!否则面向对象的数据库早就实现了!建议使用CLR的地方一般是和应用的复杂程度或操作系统环境有很高的耦合度的场景。如你想构建复杂的算法,并且用到了大量的指针和高级数据模型。
再现理想 该用户已被删除
板凳
发表于 2015-1-25 15:33:49 | 只看该作者
不好!如果出了错;不好调试;不好处理!其实web开发将代码分为3层:web层;业务逻辑层和数据访问层;一般对数据库的操作都在数据访问层来做;这样便于调试和维护!而且将来如果是换了数据库的话;你只需要改数据层的代码;其他层的基本可以不变!要是你在jsp中直接调用sql数据库;那么如果换了数据库呢?岂不都要改?如果报了异常呢?怎么做异常处理?
若天明 该用户已被删除
地板
发表于 2015-2-2 23:39:23 | 只看该作者
Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。
小妖女 该用户已被删除
5#
发表于 2015-2-8 19:37:49 | 只看该作者
Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。
变相怪杰 该用户已被删除
6#
发表于 2015-2-26 00:06:24 | 只看该作者
而写到本地,我又考虑到效率问题.大家来讨论讨论吧,分数不打紧,就给10分,十全十美,没啥对错,各抒己见,但是要有说服力的哦~
飘灵儿 该用户已被删除
7#
发表于 2015-3-8 10:45:56 | 只看该作者
两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书
admin 该用户已被删除
8#
发表于 2015-3-15 22:09:19 | 只看该作者
另一个是把SQL语句写到服务器端,就是所谓的SP(存储过程);
柔情似水 该用户已被删除
9#
发表于 2015-3-22 14:46:43 | 只看该作者
总感觉自己还是不会SQL
蒙在股里 该用户已被删除
10#
发表于 2015-3-22 15:27:02 | 只看该作者
其中最有名的应该是row_number了。这个终于解决了用临时表生成序列号的历史,而且SQLServer2005的row_number比Oracle的更先进。因为它把Orderby集成到了一起,不用像Oracle那样还要用子查询进行封装。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 23:17

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表