我正处于将大型tera数据存储过程转换为SQL Server的情况。我已经完成了大部分工作,但下面的代码让我很难过。我也试图找到关于此的在线帮助,但除了描述之外,我还没有看到PREPARE语句如何与Cursor一起运行的工作示例。 (我真的不太了解TeraData,自从我开始研究它以来只有2周了)
SET cur_stmt1=v_select_stmt||v_where_stmt;
PREPARE s1 FROM cur_stmt1;
OPEN cur1;
SET v_record_cnt = Activity_Count;
IF(v_record_cnt=0) THEN
close cur1;
SET cur_stmt1='select 0 as cnt1,' || v_col_null_stmt;
PREPARE s1 FROM cur_stmt1;
OPEN cur1;
end if;
有人可以帮助我将此代码翻译成更多T-SQL格式吗?
答案 0 :(得分:1)
要返回SELECT的结果,你需要在Teradata(和标准SQL)中使用光标,当然这不是一个真正的光标,你在另一行之后取一行,它只是一个像一个像一个线轴任何其他结果集。
在你的情况下,使用动态SQL的SELECT,所以这应该转换为T-SQL
EXEC sp_executesql @cur_stmt1;
然后,它只是检查答案集是否为空,并返回一个单行答案集,而不是select 0 ...
。