Stored procedures [Amazon](500310)无效操作:未终止的美元报价字符串位于或接近"$$

Stored procedures [Amazon](500310)无效操作:未终止的美元报价字符串位于或接近"$$,stored-procedures,amazon-redshift,Stored Procedures,Amazon Redshift,遵循通过红移查询编辑器或SQL Workbench/J创建存储过程的步骤会出现以下错误:Amazon无效操作:在“$$”处或附近未终止的美元引号字符串。以下是我尝试的代码的一般示例: CREATE OR REPLACE PROCEDURE load_inventory () AS $$ BEGIN INSERT INTO inventory(sku,qty,location) SELECT sku, qty, 'location name' FROM location_inventory;

遵循通过红移查询编辑器或SQL Workbench/J创建存储过程的步骤会出现以下错误:Amazon无效操作:在“$$”处或附近未终止的美元引号字符串。以下是我尝试的代码的一般示例:

CREATE OR REPLACE PROCEDURE
load_inventory () AS $$
BEGIN 
INSERT INTO inventory(sku,qty,location) 
SELECT sku, qty, 'location name' FROM location_inventory; 
END; 
$$
LANGUAGE plpgsql;

如何编写语句以在红移中成功创建存储过程?

使用单引号而不是美元引号字符串解决了此问题。请注意,SELECT语句中使用的字符串具有重复的单引号

CREATE OR REPLACE PROCEDURE
load_inventory () AS '
BEGIN 
INSERT INTO inventory(sku,qty,location) 
SELECT sku, qty, ''location name'' FROM location_inventory; 
END; 
'
LANGUAGE plpgsql;

使用单引号而不是美元引号字符串解决了此问题。请注意,SELECT语句中使用的字符串具有重复的单引号

CREATE OR REPLACE PROCEDURE
load_inventory () AS '
BEGIN 
INSERT INTO inventory(sku,qty,location) 
SELECT sku, qty, ''location name'' FROM location_inventory; 
END; 
'
LANGUAGE plpgsql;