KingbaseES函式如何返回結果集

2022-10-04 02:45:10 字數 1726 閱讀 5229

函式返回值一般是某一型別值,如int,varchar,date等,返回結果集時就需要用到setof語法。

test=# \set sqlterm /

test=# create or replace function f_get_class()

test-# returns setof class

test-# as

test-# $$

test$# select * from class;

test$# $$

test-# language sql;

test-# /

create function

test=# \set sqlterm ;

test=# select * from f_get_class();

id | name

----+----------

1 | 六年一班

2 | 六年二班

3 | 六年三班

(3 行記錄)

kingbasees還支援對函式結果集的條件查詢

test=# select * from f_get_class() where id =3;

id | name

----+----------

3 | 六年三班

(1 行記錄)

test=# \set sqlterm /

test=# create or replace function f_get_table(text) returns setof record as

test-# $$

test$# declare

test$# rec record;

test$# begin

test$# for rec in execute 'select * from ' || $1 loop

test$# return next rec;

test$# end loop;

test$# return;

test$# end

test$# $$

test-# language 'plpgsql';

test-# /

create function

test=# select * from f_get_table('student') as student(stuid number, name varchar(20),classtid number);

stuid | name | classtid

-------+------+----------

1 | 張三 | 1

2 | 李四 | 2

3 | 王五 | 2

(3 行記錄)

test=# select * from f_get_table('class') as class(id number, name varchar(20));

id | name

----+----------

1 | 六年一班

2 | 六年二班

3 | 六年三班

(3 行記錄)

KingbaseES 匿名塊如何傳遞引數

匿名塊的基本語法結構包括宣告和執行兩部分。匿名塊每次提交都被重新編譯和執行。因為匿名塊沒有名稱並不在資料庫中儲存,所以匿名塊不能直接從其他pl sql 塊中呼叫。定義語法 declare variable declaration cursor declaration begin sequence o...

如何根據protobuf來Mock後台返回的資料

google protocol buffer 簡稱 protobuf 是 google 公司內部的混合語言資料標準,他們用於 rpc 系統和持續資料儲存系統。protocol buffers 是一種輕便高效的結構化資料儲存格式,可以用於結構化資料序列化,或者說序列化。它很適合做資料儲存或 rpc 資...

mysql函式不返回型別的 php函式不返回值

我有乙個適用於 php 5.3 xampp 1.7.3,windows 7 的類,但在我的伺服器中不起作用 php 5.2.17 安全模式開啟 class mysql db order by id asc result mysql query q,this connection ret this m...