我正在嘗試使用 select 陳述句中的案例結果分配一個變數。我嘗試了不同的方法:
DO $$
BEGIN
declare truefalse varchar(100);
SELECT truefalse = CASE cfgvalue when 'TRUE' THEN 'FALSE' ELSE 'TRUE' END
from cfg where cfglabel = 'DO_NOT_DISPLAY_WORK_ITEMS_IN_RECEIPT_CONFIRMATION_WIN';
END;
$$
然后
DO $$
BEGIN
declare truefalse varchar(100);
SELECT CASE cfgvalue when 'TRUE' THEN 'FALSE' ELSE 'TRUE' END
into truefalse
from cfg where cfglabel = 'DO_NOT_DISPLAY_WORK_ITEMS_IN_RECEIPT_CONFIRMATION_WIN';
END;
$$
以及其他“case”語法:case when x=y then z else r end。到目前為止沒有運氣 - 我收到錯誤訊息:型別“truefalse”不存在。誰能解釋我的錯誤?
uj5u.com熱心網友回復:
如手冊中所述,該declare部分在開始之前進行。如果你這樣做,你的第二個 PL/pgSQL 塊將起作用。
DO $$
DECLARE
truefalse varchar(100);
BEGIN
SELECT CASE cfgvalue when 'TRUE' THEN 'FALSE' ELSE 'TRUE' END
into truefalse
from cfg where cfglabel = 'DO_NOT_DISPLAY_WORK_ITEMS_IN_RECEIPT_CONFIRMATION_WIN';
END;
$$
但是為什么不使用適當的布林值呢?
DO $$
DECLARE
truefalse boolean;
BEGIN
SELECT cfgvalue = 'TRUE'
into truefalse
from cfg where cfglabel = 'DO_NOT_DISPLAY_WORK_ITEMS_IN_RECEIPT_CONFIRMATION_WIN';
END;
$$
如果cfgvalue總是存盤字串'TRUE','FALSE'你甚至可以直接轉換它:
SELECT cfgvalue::boolean
into truefalse
from cfg where cfglabel = 'DO_NOT_DISPLAY_WORK_ITEMS_IN_RECEIPT_CONFIRMATION_WIN';
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/436577.html
標籤:PostgreSQL
上一篇:插入一列以不同的醫生治療
