是否应该在Redshift存储过程中使用udf ?



我需要在存储过程中使用udf。由于Redshift需要临时表或游标才能在存储过程中使用select语句,因此我选择使用临时表。在存储过程中,调用udf的代码如下:

EXECUTE 'drop table if exists ' || tmp_name;EXECUTE 'create temp table ' || tmp_name || ' as select f_MSG_log(' || i_trn_id,i_trm_msg_type_cd,i_trm_key_cd,i_trm_obj_cd,i_trm_msg_txt,i_log_level_opt,i_trm_file_nm_opt || ');';

当我调用存储过程时,它抛出一个错误:无效操作:查询"SELECT 'create temp table ' || $1 || ' as SELECT f_MSG_log(' || $2, $3, $4, $5, $6, $7, $8 || ');'"返回7列;1语句失败。

我找到了答案:

EXECUTE 'drop table if exists ' || tmp_name;create temp table(创建临时表)f_MSG_log (' | | i_trn_id || ',' || quote_literal (i_trm_msg_type_cd ) || ',' || quote_literal (var_trm_key_cd)|| ',' || quote_literal (var_trm_obj_cd ) || ',' || quote_literal (var_trm_msg_txt ) || ',' || i_log_level_opt || ',' || quote_literal (var_trm_file_nm_opt ) || ');';

相关内容

  • 没有找到相关文章

最新更新