【问题标题】:"Syntax error at or near ' , '" while trying to SELECT INTO尝试 SELECT INTO 时出现“' , ' 处或附近的语法错误”
【发布时间】:2018-10-15 13:16:42
【问题描述】:

在单个SELECT 查询中选择多个值并分配给多个变量的查询导致错误。我的 Postgres 版本是 9.5。
查询是:

 SELECT INTO region_id ,doc_type,tax_amt fk_bint_supplier_tax_region_id,chr_supporting_document_type,
dbl_base_currency_client_net-dbl_base_currency_market_fare-dbl_base_currency_cc_charge_collected+
dbl_base_currency_vat_in+dbl_base_currency_cc_charge_collected+(19*(dbl_base_currency_tax))*5/10   
FROM tbl_sales_details   WHERE chr_document_status='N' AND vchr_document_no='INV/47922/01/18'
AND vchr_supporting_document_no='5111143004'

错误是:

ERROR:  syntax error at or near ","
LINE 1:  SELECT INTO region_id ,doc_type,tax_amt fk_bint_supplier_ta...
                               ^

**********错误**********

ERROR: syntax error at or near ","
SQL state: 42601

【问题讨论】:

    标签: sql plpgsql postgresql-9.5 select-into


    【解决方案1】:

    您将into 放在列列表之后:

    SELECT region_id, doc_type,tax_amt fk_bint_supplier_tax_region_id, chr_supporting_document_type,
           (dbl_base_currency_client_net - dbl_base_currency_market_fare - 
            dbl_base_currency_cc_charge_collected + 
            dbl_base_currency_vat_in + dbl_base_currency_cc_charge_collected + 19 * dbl_base_currency_tax
           ) * 5/10   
    INTO . . . 
    FROM tbl_sales_details
    WHERE chr_document_status = 'N' AND
          vchr_document_no = 'INV/47922/01/18' AND
          vchr_supporting_document_no = '5111143004';
    

    我不知道变量名是什么,但是在INTO 之后,SELECT 中的每个表达式都必须有一个。

    【讨论】:

    • INTO 的位置是正确的 - 在 PL/pgSQL SELECT INTO 中。看起来像 OP,你们俩都对 SQL SELECT INTO 感到困惑。当然 - 有点陷阱。
    【解决方案2】:

    错误消息表明您将语句作为普通 SQL 运行。但它只在 PL/pgSQL 块中才有意义。您明确表示它是为了:

    分配给多个变量

    这仅在过程语言代码中有意义,因为在普通 SQL 中没有变量赋值。 PL/pgSQL 中的SELECT INTOSQL SELECT INTO 的含义不同——通常不鼓励使用。手册:

    CREATE TABLE AS 在功能上类似于SELECT INTOCREATE TABLE AS 是推荐的语法,因为SELECT INTO 的这种形式不是 在 ECPG 或 PL/pgSQL 中可用,因为它们解释 INTO 子句 不同。此外,CREATE TABLE AS 提供了 SELECT INTO提供的功能。

    INTO 子句的放置没有任何问题 - 当在 PL/pgSQL 中使用时,就像你标记的那样。

    相关:

    【讨论】:

      猜你喜欢
      • 2020-03-05
      • 1970-01-01
      • 2021-12-13
      • 1970-01-01
      • 2019-08-16
      • 2016-03-21
      • 2020-08-29
      • 2018-01-26
      • 2014-04-26
      相关资源
      最近更新 更多