【发布时间】:2014-12-18 14:08:51
【问题描述】:
我是 Teradata 的新手,我正在尝试将大型存储过程迁移到 SQL Server (T-SQL)。我有一个游标语句(如下),我试图理解它。它肯定是一个光标,但前面的 FOR 让我感到困惑。
FOR clmn_cursor2 AS clmn_cursor2 CURSOR FOR
SELECT LTRIM(RTRIM(cmd.src_attr_txt)) src_attrib,
case
when (CHARINDEX(' as ' ,cmd.src_attr_txt)> 0)
then SUBSTRING(cmd.src_attr_txt,CHARINDEX(' as ',LTRIM(cmd.src_attr_txt))+4, LEN(cmd.src_attr_txt))
else SUBSTRING(cmd.src_attr_txt,CHARINDEX('.' ,LTRIM(cmd.src_attr_txt))+1, LEN(cmd.src_attr_txt))
end 'col_null_var'
FROM t_srch_res_cfg cmd WHERE cmd.srch_catg_id= @search_cat_id
ORDER BY cmd.attr_disp_ord
DO
SET @v_select_stmt = @v_select_stmt + clmn_cursor2.src_attrib;
SET @v_col_null_stmt = (v_col_null_stmt) + 'NULL as ' + (clmn_cursor2.col_null_var)
END FOR;
上面的代码是什么意思?我想出了选择部分,但无法理解 FOR CURSOR 的事情。在 SQL Server 2012 上如何才能最好地实现这一点?
谢谢。
【问题讨论】:
标签: sql-server-2008 stored-procedures sql-server-2012 cursor teradata