簡體   English   中英

如何在SELECT語句中使用postgres變量?

[英]How can I use a postgres variable in my SELECT statement?

我將一個值存儲在變量featureId ,然后嘗試在SELECT語句中使用該值,但是postgres似乎是從字面上取該名稱,並正在尋找一列名為“ featureid”的列。 我收到錯誤消息“錯誤:列“ featureid”不存在第4行:featureId,”

我的代碼如下。 如何在SELECT語句中使用變量的值?

SELECT id INTO featureId FROM tableA WHERE NAME = 'some value';

INSERT INTO tableB (client_id, feature_id, does_have)
  SELECT
  id,
  featureId,
  TRUE
FROM tableA

如果沒有聲明的變量你的SELECT INTO是版本SELECT INTO創建的表 要親自查看,請嘗試:

SELECT id
       INTO featureid
       FROM tablea
       WHERE name = 'some value';

SELECT *
       FROM featureid;

為了將值分配給變量,必須聲明變量。 您可以使用匿名DO塊。

DO
$$
DECLARE
  featureid tablea.id%TYPE;
BEGIN
  SELECT id
         INTO featureid
         FROM tablea
         WHERE name = 'some value';

  INSERT INTO tableb
              (client_id,
               feature_id,
               does_have)
              SELECT id,
                     featureid,
                     true
                     FROM tablea;
END;
$$
LANGUAGE plpgsql;

您嘗試執行的操作幾乎沒有錯誤:

  • sql是聲明性語言,因此您要問該怎么做,因此,您無法存儲變量,某些聲明(如clarify和begin-end)應在觸發器中使用,而不應在簡單查詢中使用。
  • 您正在執行兩個語句: selectinsert into ,它們又一個接一個地執行,因此您不能再次存儲變量。
  • 插入,插入一條記錄,但可能會嘗試用select語句檢索更多數據(如果NAME不是唯一的)

如果'some-value'是一個已知常量,並且NAME是唯一的,只需將該值插入insert的where子句中即可。 如果您想插入更多數據,請查看postgres的批量插入語法: bulk insert

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM