儲存過程 Stored Procedure

2021-08-03 01:37:06 字數 2196 閱讀 2123

create proc or procedure sp_name

@[引數名][型別],@[引數名][型別][output]

[with]

as

begin

end;

exec/call sp_name[引數名];

—-刪除儲存過程

drop procedure sp_name;

大多數常用資料都支援儲存過程,但是各類資料庫都有自己的過程語言或者語法格式,也就是訪問不同型別的資料庫,需要考慮移植問題。下面簡單描述了各種常見資料庫中使用儲存過程的語法格式。

sql server資料庫提供的過程語言是transact-sql,簡稱t-sql。

oracle資料庫提供工程語言pl/sql來構建儲存過程。

postgresql資料庫提供多種過程語言,pl/pgsql, pl/tcl, pl/perl, pl/python,下面是pl/gpsql過程語言的乙個示例。

在oracle資料庫中,儲存過程和函式統稱為pl/sql子程式,他們的唯一區別是函式總向呼叫者返回資料,而過程則不返回資料,過程的引數可以有三種模式(in、out、in out),而函式只有一種(in)。而在postgresql資料庫中不區分函式和儲存過程,或者說它把儲存過程當做函式來處理,因此在用pl/gpsql建立的儲存過程中,必須返回資料,型別可以為void。

給出如下條件進行批處理編排

— - - 開始日期時間

— - - 重複間隔(分鐘)

— - - 重複次數

需求:

要求在檔期內重複安排節目播出, 比如: 2003.01.01 08:00 開始每隔240分鐘 播出一次, 一共播出100次, 或者使用者自行設定的其他時間。

—-建立表

create table co_schedule

(

n_progid int,

dt_starttime timestamp,

dt_endtime timestamp

);

—-建立函式(儲存過程)

create function add_program_time(int4,timestamp,int4,int4,int4) returns bool as '

declare

prog_id alias for $1;

duration_min alias for $3;

period_min alias for $4;

repeat_times alias for $5;

i int;

starttime timestamp;

ins_starttime timestamp;

ins_endtime timestamp;

begin

starttime :=$2;

i := 0;

while i

if i

end;

'language 'plpgsql';

儲存過程系列之儲存過程sql查詢儲存過程的使用

1.查詢某個表被哪些儲存過程 以下簡稱 sp 使用到 select distinct object name id from syscomments where id in select object id from sys.objects where type p and text like ta...

儲存過程系列之儲存過程sql查詢儲存過程的使用

1.查詢某個表被哪些儲存過程 以下簡稱 sp 使用到 select distinct object name id from syscomments where id in select object id from sys.objects where type p and text like ta...

Oracle儲存過程呼叫儲存過程

oracle儲存過程呼叫有返回結果集的儲存過程一般用光標的方式,宣告乙個游標,把結果集放到游標裡面,然後迴圈游標 declare newcs sys refcursor cs1 number cs2 number cstype table rowtype table列的個數和newcs返回的個數一樣...