我正在尝试运行我的存储过程脚本。其中有21个脚本成功执行了18个,但其中3个没有执行。其中一个失败的脚本如下(我正在使用PostgreSQL 9.5)
CREATE OR REPLACE FUNCTION create_temp_eid_table (tempPatientMappingTableName IN text ,errorMsg OUT text)
RETURNS text AS $body$
BEGIN
EXECUTE 'create table ' || tempPatientMappingTableName || ' (
ENCOUNTER_MAP_ID varchar(200) NOT NULL,
ENCOUNTER_MAP_ID_SOURCE varchar(50) NOT NULL,
PROJECT_ID VARCHAR(50) NOT NULL,
PATIENT_MAP_ID varchar(200),
PATIENT_MAP_ID_SOURCE varchar(50),
ENCOUNTER_ID varchar(200) NOT NULL,
ENCOUNTER_ID_SOURCE varchar(50) ,
ENCOUNTER_NUM numeric,
ENCOUNTER_MAP_ID_STATUS varchar(50),
PROCESS_STATUS_FLAG char(1),
UPDATE_DATE timestamp,
DOWNLOAD_DATE timestamp,
IMPORT_DATE timestamp,
SOURCESYSTEM_CD varchar(50)
) WITH OIDS';
EXECUTE 'CREATE INDEX idx_' || tempPatientMappingTableName || '_eid_id ON ' || tempPatientMappingTableName || ' (ENCOUNTER_ID, ENCOUNTER_ID_SOURCE, ENCOUNTER_MAP_ID, ENCOUNTER_MAP_ID_SOURCE, ENCOUNTER_NUM)';
EXECUTE 'CREATE INDEX idx_' || tempPatientMappingTableName || '_stateid_eid_id ON ' || tempPatientMappingTableName || ' (PROCESS_STATUS_FLAG)';
EXCEPTION
WHEN OTHERS THEN
RAISE NOTICE '%%%', SQLSTATE, ' - ' , SQLERRM;
END;
$body$
LANGUAGE PLPGSQL;
我收到错误声明
" org.postgresql.util.PSQLException: ERROR: too many parameters specified for RAISE
Where: compilation of PL/pgSQL function "create_temp_eid_table" near line 23".
Please check the image for clear error message.
答案 0 :(得分:2)
答案 1 :(得分:1)
这里的问题是连续两个%被视为一个%。据医生说:
编写%%以发出文字%。
这意味着%%%通常是%加一个参数,这就是发生此错误的原因。您可以将%%%与空格分开,或者传递一个参数并进行参数连接。
答案 2 :(得分:0)
是的,我通过擦除1%来解决
“这里的问题是连续两个%被视为一个%”
祝你有美好的一天!
Hiram