我有一個簡單的函數來更新表中的列。我想返回布爾值來指示更新是否成功。INSERT命令後從SQL函數返回布爾值
下面是函數:
CREATE OR REPLACE FUNCTION api.file_confirm_upload_to_s3(_file_guid uuid)
RETURNS bool AS
$BODY$
UPDATE main.file
SET is_uploaded_to_s3 = true
WHERE guid = _file_guid
RETURNING CASE WHEN guid IS NULL THEN false ELSE true END
$BODY$
LANGUAGE SQL
VOLATILE
SECURITY DEFINER;
該函數返回一個成功更新後TRUE,但不成功的更新後返回NULL 。空是虛假的,所以它適用於我,但我確實想知道如何解決這個問題。
不成功的更新將返回一個空的數據集,該數據集產生NULL,因此返回值。我如何測試空數據集與非空數據集,而不是檢查guid字段的值? JGH的回答後
編輯.. 下面是代碼,我想要做什麼。我必須切換到plpgsql才能訪問FOUND
變量。
CREATE OR REPLACE FUNCTION api.file_confirm_upload_to_s3(_file_guid uuid)
RETURNS bool AS
$BODY$
BEGIN
UPDATE main.file
SET is_uploaded_to_s3 = true
WHERE guid = _file_guid;
RETURN FOUND;
END;
$BODY$
LANGUAGE plpgsql
VOLATILE
SECURITY DEFINER;
謝謝你做到這一點。我不得不切換到plpgsql來訪問找到的變量。我用最後的代碼更新了我的問題,供其他人查找。 – Michael