【发布时间】:2014-11-21 15:17:05
【问题描述】:
我试图在我的动态 sql 查询中使用一个参数,但无法让它工作。我简化了我的代码以仅突出显示我正在努力的部分。
我首先创建“t1”,然后将记录插入其中。
创建易失性表 t1 as(
选择日期 '1900-01-01' 作为 date_col
) 提交保留行的数据;
第一个程序运行良好,并插入给定的日期 (2014-01-01)。
替换过程 mi_table.dynamic_param()
开始
调用 DBC.SYSEXECSQL(
'插入t1
选择日期'||'''2014-01-01'''||' ;'
);
结束;
我真正想做但不工作的事情是这样的:
替换过程 mi_table.dynamic_param() 开始
声明 max_avail_date 日期;
set max_avail_date = (select period_dt from db.table) ;
调用 DBC.SYSEXECSQL(
'插入t1 选择'||:max_avail_date||' ;'
);
结束;
这是行不通的。似乎从“(从 db.table 中选择 period_dt)”返回的内容是“yy/mm/dd”格式。感谢以下建议,我想出了以下(非优雅)解决方案:
每当我想使用 max_avail_date 时,我都会使用 cast((cast('''||'20'||'''||'''||max_avail_date||''' as int)-19000000) as date)。
它可以完成这项工作,但我确信有更好的方法:)
于 2014 年 9 月 27 日下午 6:50 编辑
【问题讨论】:
标签: stored-procedures parameters teradata dynamic-sql