尝试SELECT INTO时“语法错误在'或'附近','”

时间:2018-05-05 03:02:03

标签: sql plpgsql postgresql-9.5 select-into

在单个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 个答案:

答案 0 :(得分:2)

您将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中每个表达式都必须有一个。

答案 1 :(得分:2)

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

  

分配多个变量

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

  

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

您放置INTO子句时没有任何问题 - 在您标记的PL / pgSQL中使用时。

相关: