Sybase存储过程的建立和使用

SQL SERVER存储过程批量插入数据库表数据       在做数据库系统开发时,特别是需要对数据库操作进行性能测试及优化时,我们就需要在数据库测试表中插入大量数据以便测试。对于这些数据的插入,这里通过实例展示如何通过存储过程进行实现。       数据库表(userInfo)结构如下: CREATE TABLE [dbo].[userInfo] ( [userID] [int] IDENTITY (1, 1) NOT  阅读详情
存储过程的特点

  Sybase的存储过程是集中存储在SQL Server中的预先定义且已经编译好的事务。存储过程由SQL语句和流程控制语句组成。它的功能包括:接受参数;调用另一过程;返回一个状态值给调用过程或批处理,指示调用成功或失败;返回若干个参数值给调用过程或批处理,为调用者提供动态结果;在远程SQL Server中运行等。

  

  存储过程的性能特点如下:

  ·存储过程是预编译过的,这就意味着它与普通的SQL语句或批处理的SQL语句不同,当首次运行一个存储过程时,SQL Server的查询处理器对其进行分析,在排除了语法错误之后形成存储在系统中的可执行方案。由于查询处理的大部分工作已经完成,所以存储过程执行速度很快。

  ·存储过程和待处理的数据都放在同一台运行SQL Server的计算机上,使用存储过程查询当地的数据,效率自然很高。

  ·存储过程一般多由Client端通过存储过程的名字进行调用,即跨网传送的只是存储过程的名字及少量的参数(如果有的话),而不是构成存储过程的许多SQL语句,因此可以减少网络传输量,加快系统响应速度。

  ·存储过程还有着如同C语言子函数那样的被调用和返回值的方便特性。

  所以,存储过程大大增强了SQL语言的功能、效率和灵活性。掌握和应用好存储过程,对进一步发挥Sybase数据库系统的强大功能有着重要的意义。

  

  存储过程的语法规则

  建立存储过程的语法规则为:

  CREATE PROCedure[owner.]procedurename[;number]

  [[(]@parameter_name datatype[=default][OUTput]

  [,@parameter_name datatype[=default][OUTput]]...[)]]

  [WITH RECOMPILE]

  AS SQL_statements

  使用存储过程的语法规则为:

  [EXECute][@return-status=]

  [[[server.]database.]owner.]procedurename[;number]

  [[@parameter_name=]value¦[@parameter_name=]@varialbe[OUTput]

  [,[@parameter_name=]value¦[@parameter_name=]@variable[OUTput]...]]

  [WITH RECOMPILE]

  下面简要介绍这两个命令的常用选项以及建立和使用存储过程的要点,关于选项的更为详细的说明请参考有关手册。

  ·[[[server.]database.]owner.]procedure_name:存储过程的名字。

  ·@parameter_name datatype[=default][OUTput]:形式参数(形参)的名称、类型。df ault是赋予的缺省值(可选),OUTput指定本参数为输出参数(可选)。形参是存储过程中的自变量,可以有多个,名字必须以@打头,最长30个字符。

  ·SQL_statements:定义存储过程功能的SQL语句。

  ·@return_status:接受存储过程返回状态值的变量。

  ·[@parameter_name=]value:实际参数(实参),@parameter_name为实参的名称(可选)。如果某个实参以@parameter_name=value提供,那么随后的实参也都要采用这一形式提供。



  ·[@parameter_name=]@varialbe[OUTput]:将变量@varialbe中的值作为实参传递给形参@parameter_name(可选),如果变量@varialbe是用来接受返回的参数值,则选项OUTput不可缺少。

  

  存储过程的建立和使用,我们将通过几个例子进行介绍。

  假设有一个用下述语句生成的技能工资表RS-LS-GZ-JiNeng:

  create table RS_LS_GZ_JiNeng     /*技能工资表*/

  (GeRen_id char(4),         /*个人代码 */

  RiQi smalldatetime,         /*执行日期 */

  YuanYin_id char(1) null,       /*变动原因代码 */

  JinE smallmoney)           /*技能工资金额 */

  该表存储着某单位员工多年来技能工资的历史档案。

  例1.如果要查询全体员工的技能工资变动历史,则可先建立一个存储过程p-RsGz-JiNeg-All:

  create procedure p_RsGz_JiNeng_All as

  select *

  from RS_LS_GZ_JiNeng

  order by GeRenid,RiQi

  然后用批处理语句调用存储过程p_RsGz_JiNeng_All进行查询:

  execute p_RsGz_JiNeng_All

  本例只显示查询到的数据,无输入、输出参量,是最简单的一个存储过程。

  例2.如果要查询某人技能工资的变动历史,可建立另一个存储过程p_RsGz_JiNeng:

  create procedure p_RsGz_JiNeng @c_GeRenId char(4)

  as

  select *from RS_LS_GZ_JiNeng

  where GeRen_id=@c_GeRenId

  order by RiQi

  之后用批处理语句调用存储过程p_Rs_Gz_JiNeng进行查询:

  declare @GeRenId char(4)

  select @GeRenId="0135" /*设要查询员工的个人代码为"0135" */

  execute p_RsGz_JeNeng @c_GeRenId=@GeRenId

  存储过程p_RsGz_JiNeng中定义了一个形参@c_GeRenId,是字符型变量。在调用该过程的批处理中,既可以用具体的值也可以用变量作为实参。用变量作实参(如本例)时,必须用del are语句加以说明。值得注意的是,在批处理的调用过程语句中,@c_GeRenId=@GeRenId中的@ c_GeRenId是存储过程p_RsGz_JiNeng中的形参名,不是批处理中的变量,所以不能将它列入d eclare语句的变量单中。

  例3.如果要计算当月工资,就必须从工资历史中查出员工距离当前最近的一次技能工资变动的结果:

  create procedure p_RsGz_JiNeng_Slt

  (@c_GeRenId char(4),@sm_JinE smallmoney output)

  as

  select @sm_JinE=JinE

  from RS_LS_GZ_JiNeng

  where RiQi=(select max(RiQi)

  from RS_LS_GZ_JiNeng

  where GeRenid=@c-GeRenId)/*找出历史记录中距离当前最近的日期*/

  调用存储过程p_RsGz_JiNeng_Slt进行查询:

  declare @GeRenId char(4),@JinE smallmoney

  select @GeRenid="0135"/*设要查询员工的个人代码为"0135"*/

  select @JinE=0

  execute p_RsGz_JiNeng_slt @c_GeRenId=@GeRenId,@sm_JinE=@ JinE output

  这里,变量 @JinE用来存储过程形参@sm_JinE传回的金额。在调用过程语句中,@sm_JiE = @JinE output中的output不可省略。否则,变量@JinE将得不到形参传回的数值而始终为零(等于初值)。

  例4.查到了个人代码为"0135"员工的技能工资就显示其历史纪录,查不到则显示一条出错信息。

  create procedure p_RsGz_JiNeng_Rtn

  @c_GeRenId char(4)

  as

  declare @ErrCode smallint

  select @ErrCode=0

  if exists(select* from RS-LS-GZ-JiNeng

   where GeRenid=@c-GeRenId)

   begin

    select *

    from RS_LS_GZ_JiNeng

    whrer GeRen_id=@c_GeRenId

    order by RiQi

    return @ErrCode

   end

  esle

   begin

    select @ErrCode=1

    return @ErrCode

   end

  调用存储过程p_RsGz_JiNeng_Rtn:

  declare @GeRenId char(4),@RtnCode smallint

  select @GeRenId="0135"

  select @RtnCode=0

  execute @RtnCode=p_RsGz_JiNeng_Rtn @c_GeRenId=@GeRenId

  if @RtnCode=1

   print"No this one!"

  存储过程p_RsGz_JiNeng_Rtn向调用者返回一个存储在变量@ErrCode里的值,这个值被称为状态值,它向调用者反映存储过程执行的成败状态。在本例中,如果查不到指定员工技能工资的任何记录时,就认为"查无此人",返回出错状态值1。否则,返回成功状态值0。

  调用过程的批处理语句使用变量@RtnCode存储返回的状态值,一旦检出存储过程p_RsG_ JiNeng_Rtn返回了错误标志(@RtnCode=1),就显示一条信息"No this one!"。

  小结

  上述四个例子简要介绍了存储过程常用的几种形式,从中我们已经可以领略到它的编程特色以及使用上的灵活性和方便性。

  虽然上述例子在调用存储过程时都是用SQL的批处理语句实现的,但并不意味着这是唯一的方法。例如在存储过程中调用存储过程(即所谓过程嵌套)的现象就很常见。另外,在其它Sybase数据库开发系统 (如PowerBuilder)的 script语句中调用Sybase的存储过程也非常普遍。
Sybase数据库存储过程的建立和使用 Sybase的存储过程是集中存储在SQL Server中的预先定义且已经编译好的事务。存储过程由 SQL语句和流程控制语句组成。它的功能包括:接受参数;调用另一过程;返回一个状态值给调用过程或批处理,指示调用成功或失败;返回若干个参数值给调用过程或批处理,为调用者提供动态结果;在远程SQL Server中运行等。文中还举例说明了建立和使用存储过程的语法规则。 立即下载

相关推荐

PX4|Gazebo模型加载失败排查指南:从环境变量到资源路径的全面解析

本文针对PX4与Gazebo联合仿真中常见的'Unable to get model name'错误,提供了从环境变量配置、资源路径排查到网络访问问题的全面解决方案。详细解析了GZ_SIM_RESOURCE_PATH等关键变量的作用与设置方法,并给出了离线模型库部署等一劳永逸的修复指南,帮助开发者彻底解决无人机模型加载失败问题。

weixin_29243063的博客 1230

Sybase基本知识 和连接字符串的格式

Sybase基本知识 和连接字符串的格式 private const string DBString = "ENG=SMARTSelling;DBF=\\Storage Card\\Eleven\\Data" + "http://www.cnblogs.com/huanghai223/admin/file://db//SMART...

weixin_33777877的博客 772

科研党必看!Zotero+Claude3插件实战:如何用AI高效阅读文献(附详细配置步骤)

本文详细介绍了如何通过Zotero与Claude3插件的深度整合,实现科研文献的高效阅读与管理。从环境配置到核心功能实战,包括智能摘要生成、精准学术翻译和论文写作辅助等,帮助科研人员大幅提升工作效率。特别适合需要处理大量文献的研究者使用。

o0p1q2r3的博客 434

0.sybase基本操作

    Sybase SQL Server是一个多库数据库系统。这些数据库包括系统数据库和用户数据库。 而不论是系统数据库还是用户数据库,都建立在数据库设备上。数据库对象名区分大小写 SYBASE中大小写敏感   概念术语 设备 所有的数据库都创建在数据库设备上。所谓数据库设备,不是指一个可识别的物理设备,而是指用于存储数据库和数据库对象的磁盘原始分区或操作系统文件。增加一个新的...

badman250的专栏 2230

正点原子lwIP实战指南——从FreeRTOS移植到网络应用开发

本文详细介绍了如何将轻量级TCP/IP协议栈lwIP移植到FreeRTOS实时操作系统上,并基于正点原子STM32开发板进行网络应用开发。内容涵盖从使用STM32CubeMX快速搭建工程、核心概念解析(RAW/NETCONN/Socket API),到关键的系统适配、驱动实现,并通过TCP Echo服务器和云台控制两个实战案例,手把手指导读者完成从移植到应用开发的全过程,帮助嵌入式开发者快速掌握lwIP在FreeRTOS环境下的稳定部署与开发技巧。

s4t5u6v的博客 1000

Windows10内核逆向-2-KiSystemCall64的调用流程剖析

本文深入剖析了Windows 10 x64系统中KiSystemCall64函数的完整调用流程。从用户态触发syscall指令开始,详细讲解了如何通过swapgs切换内核栈、构建KTRAP_FRAME陷阱帧、进行SMAP/CFG等安全检查,到最终通过SSDT寻址并执行目标系统服务的全过程,揭示了系统调用从Ring 3到Ring 0切换的核心机制与安全设计。

weixin_29209805的博客 82

SAP Sybase创建用户数据库

SAP Sybase ASE采用多库结构,即一个数据库服务器可以包含多个用户数据库。在本文将针对OLTP Benchmark应用创建数据库的方法。     1. 创建用户数据库tpcdb使用的数据库设备 disk init name='tpc_datadev01', physname='/opt/sybase/ase157/data/tpc_datadev01.dat', size='1024

技术成就梦想 3229

AutoJs调用DeepSeek大模型接口实战教程 AutoJs接入DeepSeek、 DeepSeek API调用 、 手机脚本接入大模型

通过这篇文章,我们用 AutoJs 成功接入了 DeepSeek Chat API。使用发送请求在 Header 里正确携带 API Key从里拿到最终返回结果这样一来,你就可以在 AutoJs 里实现一个智能助手脚本,甚至做更复杂的 AI 自动化工具。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 472

[导入]Sybase存储过程的建立和使用

文章来源:http://blog.youkuaiyun.com/nm/archive/2000/08/08/4401.aspx 转载于:https://www.cnblogs.com/zhaoxiaoyang2/archive/2000/08/08/816564.html

weixin_30731287的博客 149

在zcu102开发板上使用PetaLinux运行Qt程序

请注意,上述步骤只是一个概述,并且可能需要根据特定的开发环境和要求进行适当的调整。如果你是一个初学者或者对于这些领域不太熟悉,建议在尝试之前阅读相关的文档和教程,或者寻求专业人士的帮助。在"Projects"菜单中,选择"Build & Run"选项,并在"Build"步骤中选择正确的工具链。注意:如果Qt程序依赖于其他库文件,需要将这些库文件一起复制到PetaLinux工程的根文件系统目录中,并在Qt程序中正确地配置库文件路径。如果一切顺利,PetaLinux系统将启动,并自动运行Qt程序。

UhxzCombined的博客 698

如何免费快速的部署一个自用免VIP的自动追剧工具!NAS新玩法!豆瓣与迅雷结合,轻松实现自动下载电影自动追剧功能(支持Windows,群晖nas,飞牛nas,软路由,服务器等Docker快速部署)

追剧党狂喜!豆瓣追剧神器,自动添加云盘,自动下载,微信通知,一键搞定!

XiaoqiangClub的博客 4586

Sybase中存储过程的建立与使用

Sybase的存储过程是集中存储在SQL Server中的预先定义且已经编译好的事务。存储过程由SQL语句和流程控制语句组成。它的功能包括:接受参数;调用另一过程;返回一个状态值给调用过程或批处理,指示调用成功或失败;返回若干个参数值给调用过程或批处理,为调用者提供动态结果;在远程SQL Server中运行等。   存储过程的性能特点如下:     ·存储过程是预编译过的,这就意味着它与普通

gaoshanwudi的专栏 1290

【OpenCV】图像的像素直方图 图像特征点 cv::FAST cv::ORB ORB_SLAM2::ORB

文章目录图像直方图代码实现cv::FAST和cv::ORB 检测图像特征点cv::FAST和cv::ORB 检测图像特征点代码实现ORB_SLAM2::ORB和自己实现ORB图像特征点检测效果对比ORB_SLAM2::ORB和自己实现ORB图像特征点检测效果对比代码实现 图像直方图代码实现 图像是由不同数值(颜色)的像素构成的,像素值在图像中的分布情况是图像的重要属性,可以用直方图修改图像的外观,标识图像的内容,检测图像中特定的物体或纹理。 单通道灰度图像中每个像素都有一个 0(黑色)-255(白色)的整

小秋 AI SLAM 入门实战教程 2510

sybase存储过程的建立和使用

sybase存储过程的建立和使用 存储过程的特点   sybase的存储过程是集中存储在sql server中的预先定义且已经编译好的事务。存储过程由sql语句和流程控制语句组成。它的功能包括:接受参数;调用另一过程;返回一个状态值给调用过程或批

骆枫专栏 1066

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

java sybase存储过程_Sybase存储过程的建立和使用

Sybase的存储过程是集中存储在SQL Server中的预先定义且已经编译好的事务。存储过程由SQL语句和流程控制语句组成。它的功能包括:接受参数;调用另一过程;返回一个状态值给调用过程或批处理,指示调用成功或失败;返回若干个参数值给调用过程或批处理,为调用者提供动态结果;在远程SQL Server中运行等。存储过程的性能特点如下:·存储过程是预编译过的,这就意味着它与普通的SQL语句或批处理的...

weixin_39622891的博客 315

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

SYBASE ASE12.5中存储过程的建立和调用

一、建立存储过程(三个存储过程:up_sendgroup2->up_sendsms_ex2->up_getsmsrepdisplay) 1、建立存储过程up_getsmsrepdisplay CREATE PROCEDURE up_getsmsrepdisplay( @i_sessionid varchar(100), @o_displayall...

五月天的博客 410

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

看关于Sybase存储过程的建立和使用方法

关于数据库的逻辑设计,是一个很广泛的问题。本文主要针对开发应用中遇到在MS SQL Server上进行表设计时,对表的主键设计应注意的问题以及相应的解决办法。   --序列所有者(SYSTEM_USER)   SEQ_CURRENTBIGINT NOTNULLDEFAULT0,--序列当前值   SEQ_MINBIGINT NOTNULLDEF...

weixin_30500473的博客 159

Sybase连接详解

作为一名博主,我将带您深入探讨如何连接Sybase数据库,并在Java中执行各种操作。我们将从JDBC基础开始,逐步配置Sybase JDBC连接,了解数据库操作,并解决可能出现的Sybase版本问题。本文以Java为示例语言,详细展示相关代码示例,助您轻松掌握这一技术。引言在现代软件开发中,数据库连接是至关重要的一环。了解如何连接Sybase数据库,并执行各种操作,对于Java开发人员来说至关重要。

沉淀所学,分享所思,让热爱与成长同行。商务记录AI实战经验,助力开发者快速成长。 热爱AI,希望做出有影响力的技术成果。 技术点亮生活,分享连接价值与机会。 专注AI落地实战,陪你走好技术每一步。 2万+

c#调用sybase存储过程odbc

1:引用Odbc命名空间using System.Data;using System.Data.Odbc;2:建立连接connstr="Driver={SYBASE SYSTEM 11};Srvr=数据库名;Uid=用户名;Pwd=密码";OdbcConnection Conn=

水工鸟的专栏 1003

Python3.x:pyodbc调用sybase的存储过程

Python3.x:pyodbc调用sybase的存储过程 示例代码 # python3 # author lizm # datetime 2018-03-02 17:00:00 # -*- coding: utf-8 -*- from datetime import datetime import datetime, time import sys import pyo...

weixin_30814329的博客 435
上一篇: VB程序中处理随机事件
下一篇: ASP中巧用Response属性
普通网友
博客等级 码龄26年 3粉丝 13原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值