【问题标题】:Shall we use udf in stored procedure in Redshift我们应该在 Redshift 的存储过程中使用 udf
【发布时间】:2021-02-13 23:02:46
【问题描述】:

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

EXECUTE '如果存在则删除表' || tmp_name; EXECUTE '创建临时表' || 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 条语句失败。

【问题讨论】:

    标签: amazon-web-services amazon-redshift


    【解决方案1】:

    我找到了答案:

    EXECUTE '如果存在则删除表' || tmp_name; EXECUTE '创建临时表' || tmp_name || ' as select toolbox.f_MSG_log(' || i_trn_id || ',' || quote_literal(i_trm_msg_type_cd) || ',' || quote_literal(var_trm_key_cd) || ',' ||报价文字(var_trm_obj_cd)|| ',' ||报价文字(var_trm_msg_txt)|| ',' || i_log_level_opt || ',' ||报价文字(var_trm_file_nm_opt)|| ');';

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-04
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      • 2014-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多