例5:
--在存儲過程中聲明變量
--在存儲過程中建立臨時表
create procedure test9(in sid integer , out result integer)
language sql
begin
declare a integer;
--global是全局的temporary是臨時的,session本次會話
--翻譯下就是:在本次會話中創建一個全局的臨時表,表名dtdoctype
--注意:
--臨時表的字段要用()括起來,每個字段先聲明字段名,再空格,再聲明字段類型,
--臨時表的各個字段直接用逗號(,)隔開,最後一個字段後面不需要寫逗號。
--臨時表的最後必須寫分號(;)表示建表結束
--臨時表用完,在存儲過程結束之前,要刪除臨時表
declare global temporary table session.dtdoctype
(
id integer,
parentid integer,
name varchar(300)
);
set result = 0;
set a = sid;
--將從表dtdoctype查詢出的數據保存到臨時表session.dtdoctype中;
--注意:從表dtdoctype查詢出的字段(類型和數量和順序)要和臨時表session.dtdoctype中一樣。
insert into session.dtdoctype select id,parentid,name from dtdoctype where parentid = a;
--查詢臨時表session.dtdoctype中的數量。
select count(*) into result from session.dtdoctype;
drop table session.dtdoctype;
end;
------------------------------------------------------------------
create procedure test10(in sid integer , out result varchar(10000))
language sql
begin
declare a integer;
--global是全局的temporary是臨時的,session本次會話
--翻譯下就是:在本次會話中創建一個全局的臨時表,表名dtdoctype
--注意:
--臨時表的字段要用()括起來,每個字段先聲明字段名,再空格,再聲明字段類型,
--臨時表的各個字段直接用逗號(,)隔開,最後一個字段後面不需要寫逗號。
--臨時表的最後必須寫分號(;)表示建表結束
--臨時表用完,在存儲過程結束之前,要刪除臨時表
declare global temporary table session.dtdoctype
(
id integer,
parentid integer,
name varchar(300)
);
set result = '';
set a = sid;
--將從表dtdoctype查詢出的數據保存到臨時表session.dtdoctype中;
--注意:從表dtdoctype查詢出的字段(類型和數量和順序)要和臨時表session.dtdoctype中一樣。
insert into session.dtdoctype select id,parentid,name from dtdoctype where parentid = a;
--查詢臨時表session.dtdoctype中的的第一條數據的字段name。
select name into result from session.dtdoctype fetch first row only;
drop table session.dtdoctype;
end;