2
我有一個返回自定義類型(僞)一PLPGSQL功能時,只返回一行:PostgreSQL的使用自定義類型
CREATE OR REPLACE FUNCTION my_function(entity_id integer)
RETURNS "CustomType" AS
$BODY$
DECLARE
result "CustomType";
BEGIN
SELECT
INTO result
T."Column1" AS "Column1",
T."Column2" AS "Column2"
FROM "Table1" T
WHERE T."EntityId" = entity_id
--do other stuff here before returning
RETURN QUERY
SELECT
result."Column1",
result."Column2"
END;
$BODY$
LANGUAGE plpgsql VOLATILE
的第一個問題是,該函數返回一個空行(所有值空)甚至如果select語句不返回(entity_id不存在)。 我使用Dapper將結果映射到一個對象,我需要知道該對象是否被找到(NULL或不)。
第二個問題是,即使例如我刪除了WHERE子句,該函數總是隻返回一行。 如果我將函數簽名更改爲直接從select返回查詢並刪除本地「CustomType」變量,則會返回多行,因此它按預期工作。
它現在,謝謝。但是當返回很多行時,使用LOOP在查詢上執行的性能如何呢? –