【发布时间】:2021-08-18 18:14:47
【问题描述】:
抱歉,如果标题不清楚。基本上我正在尝试将 SQl 服务器脚本以下重写为 Teradata Bteq 。我无法在 Bteq 中使用 while 循环。请帮助。
DECLARE @LOADID smallint
DECLARE @MAXLOADID smallint
DECLARE @VALUE_S numeric(10,0)
DECLARE @VALUE_E numeric(10,0)
SET @LOADID = (SELECT MINLOADID
FROM dbo.LOADID_AUD)
SET @MAXLOADID = (SELECT MAXLOADID
FROM dbo.LOADID_AUD)
WHILE @LOADID <= @MAXLOADID
BEGIN
BEGIN TRANSACTION
SET @VALUE_S = (SELECT VALUE_S
FROM dbo.LOADID_AUD_INCR
WHERE LOADIDID = @LOADID)
SET @VALUE_E = (SELECT VALUE_E
FROM dbo.LOADID_AUD_INCR
WHERE LOADIDID = @LOADID)
INSERT INTO dbo.TEST_INCR WITH (TABLOCKX)
(,LOADID, CL2, CL3, CL4, CL5, CL6, CL7, CL8)
SELECT
@LOADID AS LOADIDID, CL2, CL3, CL4, CL5, CL6, CL7, CL8
FROM
TEST_FACT TF
WHERE
TF.VALUE BETWEEN @VALUE_S AND @VALUE_E
COMMIT TRANSACTION
SET @LOADID = @LOADID + 1
END
【问题讨论】:
-
Teradata 仅在存储过程中支持循环等。
-
感谢您的回复......!我想将其转换为 Bteq 而不是我需要帮助的 Teradata 存储过程
-
Teradata 仅在存储过程中支持循环等。但是这个循环可以很容易地在单个插入/选择语句中转换
-
我创建了四个变量的易失性表,并想办法将其合并到 select 语句中。你能帮我写脚本吗
标签: sql-server teradata