sybase 儲存過程 快取

2021-05-27 06:24:08 字數 620 閱讀 7030

最近系統公升級,修改了資料庫的表字段,結果出現了問題,試了很久才找到問題,但還是不知道具體的原因。

問題如下:

sybase資料庫表tcz,應為業務需要,需在表中加乙個自增字段操作如下:

1、停止服務程式,不讓其往資料庫寫入資料。

2、把原來的表名改為tcz_old

3、新建表tcz,裡面增加id自增字段

4、把tcz_old表中的資料匯入到tcz表中

5、啟動服務程式。

啟動服務程式後發現寫入的資料是在tcz_old中而不是寫入tcz表中,重新啟動sybase資料庫也不管用。

後來發現服務程式是通過乙個儲存過程往tcz表寫的資料,所以把該儲存過程刪除後重新建立,

這時服務程式寫入的資料就寫入到tcz表而不是tcz_old表。

個人分析認為:

1、儲存過程是在第一次呼叫的時候編譯的,編譯後記錄了表的標識(id)而不是表名。

2、修改表名後並不會修改表的標識(id),所以儲存過程還是寫入原來記住的表。

3、儲存過程編譯後不是儲存在記憶體中,重啟sybase不會重新編譯儲存過程。

還沒有明白的地方是:

1、sybase的儲存過程的使用策略。

2、sybase儲存過程儲存在什麼地方。

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...

sybase 儲存過程 示例

表 student 列 student id,name,age,teacher id 表 teacher 列 teacher id,name,age,salary,student num 需求 將性別和年齡符合給定條件的學生,都指派給指定的老師,並將學生的數量,更新到teacher表中。業務成功,則...

sybase儲存過程返回引數

drop procedure p get oclist with itemnumber go 定義輸入引數 orderno 輸出引數 oc list create procedure p get oclist with itemnumber orderno varchar 30 oc list va...