從多個表中提取資料的遊標使用方法
P粉141035089
2023-08-16 13:12:27
<p>我有一個查詢,回傳多個表,類似這樣:</p>
<pre class="brush:php;toolbar:false;">SELECT TableName, DatabaseName '.' TableName, ColumnName
FROM DBC.Columns
WHERE ColumnName = 'id'</pre>
<p>我需要透過查看儲存在這些表中的資訊來循環遍歷這些表,以便只獲取特定的表。 </p>
<p>我嘗試了下面的程式碼,使用了'LOOP'和遊標,但它顯示<code>查詢無效</code>(代碼來自這裡):</p>
<pre class="brush:php;toolbar:false;">DECLARE cursor_Tables CURSOR FOR
SELECT DatabaseName || '.' || TableName
FROM DBC.Columns
WHERE ColumnName ='id';
OPEN cursor_Tables;
label1:
LOOP
FETCH cursor_Tables into tbName;
IF (SQLSTATE ='02000') THEN
LEAVE label1;
END IF;
CASE WHEN (
SELECT COUNT(*)
FROM prd3_db_tmd.K_PTY_NK01
WHERE id = 0 ) > 0
THEN tbName
END
END LOOP label1;
CLOSE cursor_Tables;
END;</pre>
<p>我該如何解決這個問題?我需要額外使用預存程序嗎? DBMS是Teradata。 </p>
如果這是SQL Server,您可以查看以下SQL遊標,我編輯了遊標聲明和其中的程式碼 雖然它們可能與您的要求不同,但我認為您可以輕鬆修改
您需要一個預存程序,因為這是在Teradata中唯一可以使用遊標的地方。