代码之家  ›  专栏  ›  技术社区  ›  Arun

“尝试选择时,在“,”处或附近出现语法错误”

  •  0
  • Arun  · 技术社区  · 6 年前

    用于在单个变量中选择多个值并分配给多个变量的查询 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
    
    2 回复  |  直到 6 年前
        1
  •  3
  •   Gordon Linoff    6 年前

    你把 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

        2
  •  2
  •   Erwin Brandstetter    6 年前

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

    分配给多个变量

    这只有在过程语言代码中才有意义,因为在普通SQL中没有变量赋值。 SELECT INTO 内部PL/pgSQL的含义与 SQL SELECT INTO -一般不鼓励使用。手册:

    CREATE TABLE AS 功能类似于 选择进入 创建表格为 是建议的语法,因为 选择进入 不是 在ECPG或PL/pgSQL中可用,因为它们解释 INTO 条款 不同地此外 创建表格为 提供的超集 提供的功能 选择进入

    您放置 进入 子句-在PL/pgSQL中使用时,就像您标记的一样。

    相关: