当前位置:首页 » 编程语言 » sybasesql语句

sybasesql语句

发布时间: 2025-06-09 12:02:18

① Sybase数据库不能使用top关键字,请问如何写sql语句代替呢

第二次回答:
我PC的版本是12.5.3,对于12.5.3及其以后的版本,可以使用top n 关键字来限制返回的数据前n行数,如果你版本不符合要求,那么可以通过set rowcount来做:
set rowcount 5
select * from users order by usr_id desc
——————————————————
第一次回答:
可以使用Top,如:

select top 5 * from users order by usr_id desc

② sybase跟踪前台执行的SQL

可以。使用Proactive DBA这个工具。

③ 讲解Sybase存储过程的建立和使用

存储过程的特点

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

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

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

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

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

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

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

存储过程的语法规则

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

CREATEPROCere[owner ]procerename[;number] [[(]@parameter_namedatatype[=default][OUTput] [ @parameter_namedatatype[=default][OUTput]] [)]] [WITHREPILE] ASSQL_statements

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

[EXECute][@return status=] [[[server ]database ]owner ]procerename[;number] [[@parameter_name=]value|[@parameter_name=]@varialbe[OUTput] [ [@parameter_name=]value|[@parameter_name=]@variable[OUTput] ]] [WITHREPILE]

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

·[[[server ]database ]owner ]procere_name:存储过程的名字

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

·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( ) /*个人代码 */

RiQi *** alldatetime /*执行日期 */

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

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

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

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

createprocerep_RsGz_JiNeng_Allas select* fromRS_LS_GZ_JiNeng orderbyGeRenid RiQi

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

execute p_RsGz_JiNeng_All

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

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

createprocerep_RsGz_JiNeng@c_GeRenIdchar( ) as select*fromRS_LS_GZ_JiNeng whereGeRen_id=@c_GeRenId orderbyRiQi

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

declare @GeRenId char( )

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

execute p_RsGz_JeNeng @c_GeRenId=@GeRenId

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

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

createprocerep_RsGz_JiNeng_Slt (@c_GeRenIdchar( ) @ *** _JinE *** allmoneyoutput) as select@ *** _JinE=JinE fromRS_LS_GZ_JiNeng whereRiQi=(selectmax(RiQi) fromRS_LS_GZ_JiNeng

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

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

declare@GeRenIdchar( ) @JinE *** allmoney select@GeRenid= /*设要查询员工的个人代码为 */ select@JinE= executep_RsGz_JiNeng_slt@c_GeRenId=@GeRenId @ *** _JinE=@JinEoutput

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

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

createprocerep_RsGz_JiNeng_Rtn @c_GeRenIdchar( ) as declare@ErrCode *** allint select@ErrCode= ifexists(select*fromRS LS GZ JiNeng whereGeRenid=@c GeRenId) begin select* fromRS_LS_GZ_JiNeng whrerGeRen_id=@c_GeRenId orderbyRiQi return@ErrCodE end eslE begin select@ErrCode= return@ErrCodE end

调用存储过程p_RsGz_JiNeng_Rtn:

declare@GeRenIdchar( ) @RtnCode *** allint select@GeRenId= select@RtnCode= execute@RtnCode=p_RsGz_JiNeng_Rtn@c_GeRenId=@GeRenId if@RtnCode= print Nothisone!

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

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

小结

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

lishixin/Article/program/Oracle/201311/17494

④ Sybase下sql出错,在线求助

使用 QuotedStr 函数 QuotedStr的作用是使字符串包含单引号:
在字符的前后加上( ‘)号,因为在DELPHI中字符赋值是需要引号的
例如:
CommandText := CommandText + QuotedStr(Edit1.Text); Sql := ‘select … from … where uName=’ + QuotedStr(Edit1.Text);
上面的语句还可以写成:
Sql := ‘select … from … where uName=’ + Char(39) + stringreplace(Edit1.Text,””,”””,[rfReplaceAll])+ Char(39);
Char(39) 代码一个分号 stringreplace 把字符串中的单引号换成两个单引号,只是还是QuotedStr好用,前后加了单引号而且把见到的单引号都替换成两个单引号了;

⑤ 怎样导出sybase数据库的所有库结构和表结构的建库的sql语句

1、在Toad for MySQL中打开数据库连接。

注意事项:

Sybase提供了一套应用程序编程接口和库,可以与非Sybase数据源及服务器集成,允许在多个数据库之间复制数据,适于创建多层应用。系统具有完备的触发器、存储过程、规则以及完整性定义,支持优化查询,具有较好的数据安全性。

热点内容
内网服务器搭建工具 发布:2025-06-09 20:43:19 浏览:559
码云源码网 发布:2025-06-09 20:38:38 浏览:948
Linux驱动开发入门与实战 发布:2025-06-09 20:19:46 浏览:25
安卓手机的sokey是什么 发布:2025-06-09 20:19:38 浏览:339
易语言编译免费 发布:2025-06-09 20:18:19 浏览:596
压缩比与油耗 发布:2025-06-09 20:05:34 浏览:291
空调压缩机电阻 发布:2025-06-09 19:54:32 浏览:918
php数据库表格数据 发布:2025-06-09 19:39:22 浏览:828
我的世界大服务器ip 发布:2025-06-09 19:38:44 浏览:466
三分屏加密 发布:2025-06-09 19:37:12 浏览:298