Text
---------------
1
(1 row affected)
text
----------------------------------------------------------------------------------------------------------------------
create procedure p_convert_num_to_char
@cint numeric, @outchar varchar(10) output
as
if (@cint=4)
select @ouhr=''Fu''''
if (@cint=5)
select @ouhr=''Fv''''
if (@cint=6)
select @ouhr=''i''''
(1 row affected)
(return status = 0)
18、 oracle中查看源码,查看该sources表
19、 在一个过程中调用另外一个过程,
例如:
create procedure test_one @test_proc_name varchar(255)
as exec @test_proc_name
20、 记住在sybase中行l'''go'不''''''为结束兼执行
21、 创建数据库用户:sa用户 master库中,sp_addlogin user,password,dbname
22、 变更数据属主::sa用户进入要变更的数据库执行 sp_changedbowner user,dbname
23、 设置用户的默认登陆数据库::sa用户进入要设定的数据库执行:
sp_defaultdb user,dbname
24、 以#开头返牧偈北碇皇窃谀骋还袒騭ql操作中存在,一旦过程或sql操作结束,则临时表就不存在了,如果再要访问就回出错。解决是不建立以#为preffix的表。
25、 要想直接手工插入值到表中identity字段,需要打开该表的identity_insert选项。
Set identity_insert 表名 on/off
如:
set identity_insert t_dns_rezo_gs on
这样insert into t_dns_rezo_gs(rzgs_id,rzgs_name) value99'''22'''')才会成功。
26、 指定某个过程什么时候执行后用waitfor delay "hh24:mi:ss",并且用了这种方式后该connection不会有什么响应直到过程被执行完成。
如半个小时后执行过程test_p
begin
waitfor delay "0:30:00"
exec test_p
end
27、 调用带返回参数的过程完整例子
create procedure p_convert_num_to_char
@cint numeric, @outchar varchar(10) output
as
if (@cint=4)
select @ouhr=''Fu''''
if (@cint=5)
select @ouhr=''Fv''''
if (@cint=6)
select @ouhr=''i''''
go
declare @getchar varchar(10)
exec p_convert_num_to_char 4,@outchar=@getchar output
28、 过程中有返回参数时,如果预先设定参数值,最终都会改变
如:
declare @First int
select @First=123
exec test_p @second=@First output
//运行结果为999
则@second和@First 都为999
29、 过程名改名sp_rename oldname, newName
30、 ct-library编程,在sybase提供的linux中有,环境搭建要点,要确定$SYBASE设定了,$SYBASE_OCS设定open client所在目录即可不要是全目录,还要设定平台$SYBPLATFORM=linux; 具有这三个环境变量,open client提供的sample才可大部分编译通过;其中有几个程序由于找不到-lsrv,而编译通不过。推测可能涉及了open server的东西,所以没有通过。
例子程序可以单独编译,如make 例子名 &np; [F.E make firstapp
]
设定LD_LIBRARY_PATH=$ATH=$SYBASE/$SYBASE_OCS/lib
编译形式例如firstapp.c
$SYBASE=/opt/sybase-12.5
$SYBASE_OCS= OCS-12_5
cc -o fist firstapp.c -I. -I/opt/sybase-12.5/OCS-12_5/include -L/opt/sybase-12.5/OCS-12_5/lib -rdynamic -ldl -lnsl -lm -lct -lcs -lsybtcl -lcomn -lintl
31、 db-library编译语句:
cc -I. -I/opt/sybase-12.5/OCS/include example1.c /opt/sybase-12.5/OCS/lib/libsybdb.a -lm -o example1
同样要设好SYBASE SYBASE_OCS SYBPLATFORM
并且要保证interface文件中连接服务器是对的。
同时对于想要连接的服务器名要在环境变量DSQUERY中设好。
如:
export DSQUERY=accunetsvr
注意,用hostname作为连接名时,确保/etc/hosts中的IP和hostname有对应且对应正确。
32、 db-library 经实验数据库连接结构支持线程间的传递,将函数打包用下列样式:
gcc -c -I. -I/opt/sybase-12.5/OCS/include s_fcts.c
ar r libleon.a s_fcts.o
rm -rf *.o
打包完毕
调用函数进行编译样式:
cc -I. -I/opt/sybase-12.5/OCS/include ss_nip_checkUGandUser.c libleon.a
/opt/sybase-12.5/OCS/lib/libsybdb.a -lm -o leon4
或者
cc -I. -I/opt/sybase-12.5/OCS/include -o leon4 ss_nip_checkUGandUser.c libleon.a
/opt/sybase-12.5/OCS/lib/libsybdb.a -lm
33、 DB-library的应用程序运行其他机上访问另一台机(数据库所在的机器).在客户机上需要装sybase-comom 和syabse-openclient组件。需要设定对SYBASE / DSQUERY. 其中sybase要设定为指向interfaces文件的路径,DSQUERY要设定为要远程访问的主机名(adapative_server_name).将远程主机的interfaces拷贝到客户机上SYBASE指定的目录即可。注意如果没有设定DSQUERY,则程序默认去找sybase的数据库,这时如果没有该数据库名字在interfaces文件中,程序就会不行。
[实际只需设定好DSQUERY环境变量和interface文件即可]
34、 DB-library应用在多线程中每次都要重新连接数据库,否则一定时间后连接会被操作系统重置掉。 Connection reset by peer
35、 DB-library的错误捕捉。系统提供一种系统错误信息函数自动在出现错误时去捕捉显示错误信息。
int msg_handler(dbproc, msgno, msgstate, severity, msgtext,
srvname, procname, line)
DBPROCESS *dbproc;
DBINT msgno;
int msgstate;
int severity;
char *msgtext;
char *srvname;
char *procname;
int line;
{};
int err_handler(dbproc, severity, dberr, oserr, dberrstr, oserrstr)
DBPROCESS *dbproc;
int severity;
int dberr;
int oserr;
char *dberrstr;
char *oserrstr;
{};
dbmsghandle(msg_handler);
dberrhandle(err_handler);
除此之外,用户如果想要自己控制错误信息可在dbsqlexec() 调用后并且while()处理完后,调用dbcount(dbproc)进行错误信息判断,如果等于-1则出现错误。特例调用没有select的过程::dbnocount设为on::没有select的sql语句::sql写错::sql执行错误等都可以出现-1所以要小心判断处理。
36、 Jdbc连接sybase。首先需要jconn2.jar和jTDS2.jar文件,在环境变量CLASSPATH设定好。
Class.forName("com.sybase.jdbc2.jdbc.SybDriver");
url结构为: jdbc:sybase:Tds:dbserver_ip/dbserver_hostname:dbserver_port/dbname
dbserver的端口为数据库服务器上的interfaces文件中对应的数据库端口。
例子:
192.168.0.6
interfaces
[root@accunetsvr sybase-12.5]# more interfaces
accunetsvr_text
master tcp ether accunetsvr 4500
query tcp ether accunetsvr 4500
accunetsvr
master tcp ether accunetsvr 4100
query tcp ether accunetsvr 4100
accunetsvr_back
master tcp ether accunetsvr 4200
query tcp ether accunetsvr 4200
accunetsvr_mon
master tcp ether accunetsvr 4300
query tcp ether accunetsvr 4300
ACCUNETSVR_XP
master tcp ether accunetsvr 4400
query tcp ether&上一页 [1] [2] [3] [4] [5] 下一页 |