在单个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
答案 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 INTO
与SQL SELECT INTO
具有不同的含义 - 通常不鼓励使用它。手册:
CREATE TABLE AS
在功能上与SELECT INTO
相似。CREATE TABLE AS
是推荐的语法,因为SELECT INTO
的这种形式不是 在ECPG或PL / pgSQL中可用,因为它们解释INTO
子句 不同。此外,CREATE TABLE AS
提供了一个超集 由SELECT INTO
提供的功能。
您放置INTO
子句时没有任何问题 - 在您标记的PL / pgSQL中使用时。
相关: