這裏是我用一個語句臨時表的過程:SQL0107N名稱「插入OH09ZC1.cte3與CTE2(列表,CNT,cnt_max)AS(SELECT」太長的最大長度爲「128」
CREATE OR REPLACE PROCEDURE dept_query (
p_table CHAR(10),
p_date CHAR(10),
p_start CHAR(6)
)
LANGUAGE SQL
BEGIN
DECLARE v_table VARCHAR(128);
DECLARE v_colname VARCHAR(128);
DECLARE v_month CHAR(6);
DECLARE v_int integer default 0;
DECLARE stat VARCHAR(1000);
DECLARE stmt STATEMENT;
.......
set stat = 'insert into cte1 select colname, row_number() over() as row_nbr from syscat.columns where tabname = ?';
PREPARE stmt FROM stat;
execute stmt using p_table;
set stat = "insert into OH09ZC1.cte3 -- cte, cte1 & cte3 are ordinary tables
with cte2 (list, cnt, cnt_max) AS
(SELECT VARCHAR('', 32000), 0, count(colname) FROM OH09ZC1.cte1
UNION ALL
SELECT
case when cte2.list = '' THEN RTRIM(CHAR(cte1.colname))
else cte2.list || ', ' || RTRIM(CHAR(cte1.colname)) end,
cte2.cnt + 1,
cte2.cnt_max
FROM OH09ZC1.cte1, cte2
WHERE cte1.row_nbr = cte2.cnt + 1 AND cte2.cnt < cte2.cnt_max)
select list FROM cte2 where cte2.cnt = cte2.cnt_max fetch first 1 rows only";
PREPARE stmt FROM stat;
execute stmt;
......
END;
這讓我列的列表在表中。 的問題是,「插入OH09ZC1.cte3與CTE2(列表,CNT,cnt_max)AS」不包含任何長的名字,爲什麼我得到這個錯誤:。 SQL0107N名稱是太長「與CTE2(列表,CNT,cnt_max)AS(SELEC插入OH09ZC1.cte3」的最大長度爲「128」 我的時候也得到了同樣的錯誤插入OH09ZC1.cte3'不存在。
您正在使用什麼RDBMS? –
@Rowland肖DB2 v10.1.0.2 – user2815022