Sybase_1

转自:http://blog.csdn.net/Didizyp/archive/2007/07/12/1687298.aspx

 

前段时间从Sybase网站上当的Sybase ASE 15 Windows版(以下简称Sybase),这几天没事,便简单了解了一下。
一、安装
     将下载的ase1500_de_win.zip文件解压缩,双击setup.exe。由于整个安装过程都有提示,因此不需要做太多说明,唯一要注意的是在选择安装类型时,如果想使用ODBC、OleDb或者ADO.net进行开发,一定要选择自定义安装,因为在默认情况下被安装的只有JDBC驱动,其他驱动是不会安装的。
     安装完之后,可以在“控制面板”->“性能和维护”->“管理工具”的“数据源 (ODBC)”中查看一下:

其中的“Adaptive Server Enterprise”就是Sybase的ODBC驱动。
     不过至此我们的安装工作还没有结束,如果不想看到自己输入的中文变成乱码,就按照下面方法去做。
     请点击“开始”菜单->“所有程序”->“Sybase”->“Adaptive Server Enterprise”->“Server Config”,打开“Configure Sybase Server”窗口。在窗口左侧的Product栏中选择Adaptive,然后点击“Configure Adaptive Server...”按钮,打开“Existing Servers”窗口。在窗口选中服务器,然后点击Continue按钮进入下一窗口。输入用户名和密码,默认用户名为sa,密码为空,点击Continue。此时如果服务没启,Sybase会提示,点击“确定”,稍等片刻,“Configure Adaptive Server”窗口就出现了。

在窗口中点击“Language”按钮,打开“Language Options”窗口。

点击Character下的“Add/Remove”按钮,打开“Install Character Sets”窗口,在Available栏中选中“Unicode 3.1 UTF-8 CHaracter Set”,即utf8字符集,点击“Add”按钮,点击OK。下面再点击Character下的“Set Default”按钮,打开“Change Default Character Set”窗口,默认选中的是“Code Page 850 (Multilingual) character set”,即cp850字符集。这个字符集不对,请选中刚刚添加的utf8字符集,点击OK,回到“Language Options”窗口,然后再点击OK。由于我们对服务重新进行了设置,因此接下来需要等待一段时间。
     设置完成后,打开“运行”窗口,输入命令“services.msc /s”,打开“服务”。请选中“Sybase SQLServer _ IMAGE”,IMAGE是我的Sybase服务名,点击“启动服务”按钮,等待片刻后,系统提示此次启动失败,重启操作系统。重启后,再次在“服务”中启动Sybase,如果还是提示错误,不要管他,再次启动服务一切就OK了。
     服务启动后,请点击“开始”菜单->“所有程序”->“Sybase”->“Sybase Central v4.3”,打开Sybase Central,这是一个Sybase客户端工具。在左侧的Folders中点开Adaptive Server Enterprise,选中Default,右建,选择“Connect...”,打开Connect窗口。

在窗口中填写User ID为sa,Password为空,Server name选择IMAGE,Character set和Language分别设置为cp936和Chinese。注意,这里客户端设置的字符集是cp936,而非cp850、utf8或者eucgb。设置好后,点击OK,就可以开始对Sybase的操作了。
二、简单操作
1.创建数据库设备
     数据库设备其实就是一个用来保存数据的文件,一个数据库通常会指定保存在一个或多个数据库设备中。
     在Sybase Central的Folders中找到Database Devices(数据库设备),选中,然后在Details中双击“Add Database Device”。在弹出窗口的“Device Path”中设置存放路径和文件名称,我设置的是F:/YPJCCK/DataBase/Sybase/zhengTest.dat,点击Next。新界面是用来设置设备编号和文件大小的,这里我只设置Size为64M。点击Next,无需修改,再次点击Next:

这个界面是用来展示设置信息的,用户可以根据这些信息确定自己之前的设置是否正确。请注意Preview按钮,点击该按钮后即通过可查看到创建设备的SQL语句。Sybase Central在创建视图、存储过程及触发器等对象时同样会提供该功能。确认信息无误,点击Finish创建设备。
     如果想在设备创建后查看SQL语句,请在Details中选中相应设备,右键,点击Generate DDL就可以了。
     如果想删掉设备,请在Details中选中相应设备,右键,点击Delete:

这个界面是用来确认删除对象的,确认后点击Yes即可。这里也请注意Preview按钮,点击该按钮后同样可以查看到删除设备的SQL语句,而且Sybase Central在删除表、视图、存储过程及触发器等对象时也都提供了该功能。
2.创建数据库
     在Sybase Central的Folders中找到Databases(数据库),选中,然后在Details中双击“Add Database”。在弹出窗口中设置数据库名称,我设置的是zhengTest,点击Next。新界面是用来为数据库指定设备的,可以指定多个,请点击Add按钮:

在弹出窗口中选中设备zhengTest,然后设置Size为32,点击OK返回,再点击Finish,数据库就被创建了。
     如果想在数据库创建后查看SQL语句,请在Details中选中zhengTest,右键,点击Generate DDL。不过数据库的Generate DDL下还有两个子菜单,第一个为Create Database DDL,选择后只会看到创建数据库本身的SQL语句;第二个为Database Object DDL,点击后会出现一个对话框:

这个对话框列出了数据库中的所有对象类型,但要注意,在这个对话框中,选择了哪个类型,属于那个类型的对象的就不会出现在弹出窗口中,而没有选择的则会出现。Sybase Central对表、视图、存储过程、触发器等对象都提供了Generate DDL。
     如果想删掉数据库,只要选中zhengTest,右键,点击Delete,或者在Interactive SQL(Sybase自带的一个SQL命令执行工具,) 中执行命令:
     drop database zhengTest
即可。Sybase Central对表、视图、存储过程、触发器等对象也都提供了Delete。
3.创建数据表
     在Sybase Central的Folders中找到zhengTest->User Tables并选中,然后在Details中双击“Add Table”,打开“New Table”窗口:

在窗口中设置Name为book,添加两个字段:
     bookcode     nvarchar(10)     主键
     bookname     nvarchar(50)
然后点击“Save and Close”按钮,这样book表就创建好了。
     下面选中book表,右键,点击“View Data in Interactive SQL”,就可以在Interactive SQL中查询book的数据了。不过由于我们还没有向book表中添加过任何数据,因此看到的结果为空。请在Interactive SQL中执行以下命令:
     insert into book (bookcode, bookname) values ('0000000001', 'test')
     go
     insert into book (bookcode, bookname) values ('0000000002', '测试')
     go
然后再次执行select * from book,此时就看到刚刚插入的数据了。
     不过我现在又有了个新的想法,为book表增加一个anthor,即作者字段。但一个作者似乎可以创作很多书,要是每条记录都将作者信息重复填写一遍,好麻烦啊,该怎么办呢?
     请在Sybase Central中创建一个新表author,字段如下:
     authorcode     nvarchar(10)     主键
     authorname     nvarchar(20)
创建之后,在Interactive SQL中向author表插入一条数据:
     insert into author (authorcode, authorname) values ('0000000001', 'Smile')
     下面选中book,右键,点击Edit,修改book表如下:

新增加bookauthor字段,类型为nvarchar(10),由于增加该字段之前表中已有数据,为防止出错须选中Allow Nulls,即允许该字段为空。修改之后,在Interactive SQL中更新book表中的数据:
     update book set bookauthor = '0000000001'
这时再次查询数据:
     select bookcode, bookname, authorname from book, author where bookauthor *= authorcode
就看到期待已久的结果了。
     如果想删掉表,只要选中book,右键,点击Delete,或者在Interactive SQL 中执行命令:
     drop table dbo.book
即可。
4.创建视图
     视图是虚拟的表,其特点是操作简单、使用安全。
     请在Sybase Central的Folders中找到zhengTest->Views并选中,然后在Details中双击“Add View(Wizard)”,打开“Add Trigger”向导。在第一个界面中输入视图名v_book,点击Next进入下一个界面。

这个界面是用来编写代码的,除可以在文本域中编写外,还提供有“SQL Editor”和“Load”两个按钮,前者点击后会调出一个Sybase自带的编辑器,下面在编辑器中编写代码如下:
     CREATE VIEW dbo.v_book
     AS select bookcode, bookname, authorname
         from book, author
         where bookauthor *= authorcode
然后点击“Save view and close”回到刚才的界面;后者用于加载已经完成的SQL语句,这里不使用。点击Finish按钮,Sybase提示视图v_book已存在,因为刚才在编辑器中点击的是“Save view and close”,即保存视图并关闭。此时点击OK,然后点击Cancel即可。类似的界面在后面编写存储过程和触发器的时候还会遇到。
     下面选中视图v_book,右键,点击“View Data in Interactive SQL”,就可以在Interactive SQL中使用v_book来查询数据了。
     如果想删掉视图,只要选中v_book,右键,点击Delete,或者在Interactive SQL 中执行命令:
     drop view dbo.v_book
即可。
5.创建存储过程
     存储过程是一组存储在数据库服务器段执行特定操作的SQL语句,具有创建时编译、可重复使用、安全性高等特点。

     最简单的存储过程(查询):
     在Sybase Central的Folders中找到zhengTest->Stored Procedures并选中,然后在Details中双击“Add Procedures(Wizard)”,打开“Add Stored Procedure”向导。在第一个界面中填写存储过程名称,例如simple_query,点击Next。在接下来的两个界面中不必进行任何操作,直接点击Next。在第四个界面中输入代码:
     CREATE PROCEDURE dbo.simple_query
     AS select bookcode, bookname, authorname
         from book, author
         where bookauthor *= authorcode
点击Finish。至此,存储过程创建完毕。
     这个存储过程最为简单,即没有参数,也没有返回值,更没有任何逻辑处理。
下面选中存储过程simple_query,右键,点击“Execute with Interactive SQL”,在Interactive SQL中会生成一条语句“exec dbo.simple_query”,其中exec全拼为execute,表示执行存储过程。执行后,会返回一个结果集,即SQL语句的执行结果。

     下面来看一个内容相对完整的存储过程例子:
     CREATE PROCEDURE dbo.simple_demo
     (
         @i_mesg nvarchar(100) = 'Y',             --输入参数,设置默认值为'Y'
         @o_mesg nvarchar(100) output        --输出参数
     )
     AS
     BEGIN
         if @i_mesg = 'Y'     --逻辑处理
         begin
             select @o_mesg = '运行正常!'     --在Sybase中需要使用select语句为变量赋值
             return 0         --返回值
         end

         select @o_mesg = '运行异常!'
         return -1           --返回值
     END
这个存储过程虽然没有调用数据表,但带有输入参数、输出参数、逻辑处理和返回值,因此内容相对完整。这里请注意,返回值只能是整数,而输出参数也可以用来将值传入并设置默认值。
下面在Interactive SQL中执行以下代码:
     declare @o_mesg nvarchar(100),      --定义变量
                    @ret int
     exec @ret = dbo.simple_demo 'N', @o_mesg output     --执行存储过程,注意,输出参数必须标以output,否则不会输出任何值
     print '%1!--------%2!', @ret, @o_mesg               --输出结果
按F5键执行,输出结果:-1--------运行异常!
     下面将这段代码写到存储过程当中:
     CREATE PROCEDURE dbo.simple_call
     AS
     BEGIN
         declare @o_mesg nvarchar(100),
                        @ret int
         exec @ret = dbo.simple_demo 'N', @o_mesg output
         print '%1!--------%2!', @ret, @o_mesg
     END
这是一个存储过程调用存储过程的例子了。

     下面再新建一个simple_execute存储过程,代码如下:
     CREATE PROCEDURE dbo.simple_execute
     AS
     BEGIN
         execute ('select * from v_book')
     END
这个存储过程含有两个内容:一个SQL语句的动态执行,即Sybase中允许将SQL语句处理成一个字符串或字符串变量来执行;一个是对视图的访问。

     下面再看几个存储过程的例子。
     通过游标读取数据示例:
CREATE PROCEDURE dbo.p_query_list
AS
BEGIN
     declare @bc nvarchar(10)
                  ,@bn nvarchar(50)
                  ,@an nvarchar(20)
     --定义游标
     declare book_curs cursor for
     select bookcode, bookname, authorname
         from book, author
         where bookauthor *= authorcode
         order by bookcode

     open book_curs --打开游标

     --循环游标读取数据
     fetch book_curs into @bc, @bn, @an
     while (@@sqlstatus = 0)
     begin
         print '编号:%1!|名称:%2!|作者:%3!', @bc, @bn, @an
         fetch book_curs into @bc, @bn, @an
     end

     close book_curs --关闭游标
     deallocate cursor book_curs --释放游标
END

     通过变量读取数据示例:
CREATE PROCEDURE dbo.p_query_detail
@query      nvarchar(10)
AS
BEGIN
     declare @bookcode   nvarchar(10),
                   @bookname   nvarchar(50),
                   @authorname nvarchar(20)
     /* top用来指定取得结果集的前n条数据,这里使用top 1即表示取得结果集的第一条记录,否则当结果集中有多条记录时,只有最后一条记录的值才会被赋值给变量 */
     select top 1 @bookcode = bookcode, @bookname = bookname, @authorname = authorname from v_book where bookcode = @query

     print '编号:%1!|名称:%2!|作者:%3!', @bookcode, @bookname, @authorname
END
执行:在Sybase Central中选中p_query_detail,右键,点击“Execute with Interactive SQL”,由于p_query_detail有一个输入参数,因此Central会弹出一个Call窗口:

在窗口中填值时一定要注意,由于数据类型为nvarchar(10),为字符串,因此一定要在值的两边加上单引号“’”。然后点击OK,在Interactive SQL中按F5键执行该存储过程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值