sybase 基本語法,儲存過程,觸發器

2021-06-03 11:53:13 字數 1970 閱讀 1355

最近2天用了一下sybase,總結一下sybase儲存過程和觸發器的一些基本特點。

sybase據說在12.xx以後支援自定義function了,但是在adaptive server enterprice版本中似乎不行,

但是函式可以通過儲存過程來實現,因為儲存過程也是有返回值的:)

儲存過程

sybase的儲存過程語法基本上與sqlserver相似

變數名需要前面加上@,比如@abc

每行行末不需要分號(;)

基本函式什麼的與sqlserver很接近,但有個煩人的charindex(字元查詢函式)不一樣,沒有

開始查詢位置的引數:(,只能自己來實現了。

1.基本結構

create procedure 儲存過程名字

@引數1 varchar(100), //輸入引數

@引數2 int, //輸入引數

@引數3 int output //輸出引數

asdeclare

@變數1 int;

@變數2 date;

begin

***x

end2.select into statement

這個似乎不支援,那只能用游標來實現了

將select查詢的結果存入到變數中,可以同時將多個列儲存多個變數中,必須有一條

記錄例子:

begin

select col1,col2 into @變數1,@變數2 from typestruct where ***;

end;

3.if 判斷

if @v_test=1

begin

do something

end4.while 迴圈

while @v_test=1

begin

***x

end5.變數賦值

set @v_test = 123

select @v_test = 123

6.使用cursor

...as

declare cur_name cursor for select * from ***(表名,在觸發器中可以是inserted,deleted)

begin

open cur_name

fetch cur_name into ***,***...

begin

set @v_sum =@xx+@yy

endend

2.關於sybase觸發器

sybase 不支援行級觸發器,只能是語句級的,sqlserver也不支援,oracle和mysql是支援的(通過for each row)。

行級比如就是執行insert into *** select * from ***類似語句的時候,每插入一行呼叫一次觸發器

語法:create trigger trigger_name on 繫結的表 for insert|update|delete

asdeclare 宣告變數

begin

***end

因為不支援行級,可以通過游標來達到相同的目的,就是有點麻煩,比如:

create trigger t1_trigger on t1 for insert

asdeclare cur_ins cursor for select name from inserted

declare @name varchar(200)

begin

print 'fired ...'

open cur_ins

fetch cur_ins into @name

while @@sqlstatus=0

begin

print @name

fetch cur_ins into @name

endclose cur_ins

end如果表t1一條語句插入多行,那麼name就被列印多次。

author webjlwang at gmail.com

儲存過程基本語法

儲存過程可以看作是在資料庫中sql語句的集合,通過執行儲存過程來達到對資料庫的操作,它實現功能和sql語句實現的功能是一樣的,但是兩者在語法上有很大不同,下面介紹儲存過程的用法。1 宣告變數 在儲存過程中宣告變數用declare關鍵字語法如下 declare 示例 declare studentid...

sybase 儲存過程 快取

最近系統公升級,修改了資料庫的表字段,結果出現了問題,試了很久才找到問題,但還是不知道具體的原因。問題如下 sybase資料庫表tcz,應為業務需要,需在表中加乙個自增字段操作如下 1 停止服務程式,不讓其往資料庫寫入資料。2 把原來的表名改為tcz old 3 新建表tcz,裡面增加id自增字段 ...

Sybase 儲存過程GROUP

版本1 if object id dbo.statistics for ang is not null drop procedure dbo.statistics for ang gocreate procedure statistics for ang begin time date as beg...