590

Sybase存储过程学习

2015.05.17 评论(1) 268次

工作中基本上用到的都是Sybase,对于复杂的业务或者统计,也都是使用存储过程处理。存储过程的优劣点大家应该都了解一些:

  1. 性能好,首次运行时,查询处理器对存储过程其进行分析,在排除了语法错误后形成存储在系统中的可执行方案。由于查询处理的大部分工作已经完成,所以存储过程执行速度很快。
  2. 能用编程式的方式查询/处理数据,可以定义传入参数和返回值,方便调用和取值。

这篇文章主要是对以前存储过程的使用进行了总结。下面进入正题。

一、定义、修改、删除存储过程

定义

定义一个存储过程的语法如下:

使用sql调用存储过程的语法:

在JAVA中调用存储过程SQL

修改

重新命名存储过程 语法:sp_rename old_name , new_name 语法 例:将已创建的存储过程p1改名为p2:

删除

删除存储过程和删除表相似,用drop:

二、定义变量

定义变量时,使用的关键字为DECLARE,语法如下:

定义一个变量

定义多个变量

可以不用重复的写DECLARE,只需要用逗号隔开即可。

三、变量赋值

变量定义有两种方法,第一种是用SELECT语法,另一种是用SET,这两种方式都可以。

这里需要注意的是赋值的时候确定好自己变量的长度,比如下面这么写:

查询出的结果只会输出一个"t",因为没有指定参数的长度。

四、流程控制

Sybase中的流程控制和Java等语言类似,语法如下:

一个分支条件

两个分支条件

多个分支条件

其中最后一个ELSE语句可以不写。

五、循环

Sybase中的循环语句只有WHILE语句,和JAVA语法一样

六、游标

游标比较复杂,分为以下步骤:

  1. 定义游标需要的参数
  2. 定义一个游标名称,同时定义查询语句,
  3. 打开游标
  4. 给游标赋值
  5. 用while循环查询下一行数据
  6. 在while块中执行业务,在最后一句需要从新给
  7. 关闭游标

下面是个例子

六、事务控制

Sybase中默认每个DML语句是一个事务,因此,正确地处理事务和错误就很重要了。
EXEC sp_procxmode 'spname', 'unchained' 让存储过程不在事务链模式中。


七、其他

执行sql字符串

如果有个字符串变量中存储的是Sql,并且想在数据库中执行的话,可以用下面方法直接执行:

EXEC(@SQL)

输出自定义信息

在调试存储过程中,常常需要输出一些关键参数,这时候就可以用print关键字

在编写过程中,可以使用SELECT和PRINT

print与select之间最大的不同,应该是输出的地方不同。

select是直接输出为结果集,如果你使用客户端调用的存储过程,则会将结果返回到客户端。

而PRINT输出的是监控信息,不在结果集中显示,这就说明它不影响你所有业务逻辑,输出的地方与错误信息相似,如下图:

完:本文共1607字
标签: , ,
  • 本文标题:Sybase存储过程学习
  • 本文地址:http://www.jialeens.com/archives/590.html
  • 本站文章除注明转载外,均为本站原创或编译
  • 欢迎任何形式的转载,但请务必以链接形式注明出处,请尊重他人劳动成果
  • 本作品采用 [知识共享署名3.0] 进行许可
相关文章:
一条评论
评论 (1)
相关 (0)
  • 还没有Trackback
发表评论
icon_wink.gif icon_neutral.gif icon_mad.gif icon_twisted.gif icon_smile.gif icon_eek.gif icon_sad.gif icon_rolleyes.gif icon_razz.gif icon_redface.gif icon_surprised.gif icon_mrgreen.gif icon_lol.gif icon_idea.gif icon_biggrin.gif icon_evil.gif icon_cry.gif icon_cool.gif icon_arrow.gif icon_confused.gif icon_question.gif icon_exclaim.gif