2
有什麼辦法可以將動態生成的SQL提交給Teradata?我寫了一個查詢,它將創建代碼以使表格非規範化。現在,我將代碼下載到我的客戶端(SAS)並在第二步中重新提交。我不熟悉Teradata宏或程序;會有那樣的工作嗎?如何在Teradata中執行動態SQL
爲了說明,我有這樣定義的表:
create multiset table MYTABLE
( RECID integer generated always as identity
(start with 1
increment by 1
minvalue -2147483647
maxvalue 2147483647
no cycle)
, SNAP_DATE date format 'YYYY/MM/DD'
, EMAIL_DATE date format 'YYYY/MM/DD'
, FREQ integer
)
unique primary index (RECID )
該表被填充每天(SNAP_DATE
)和用於監測在另一個表改變爲email_date。下面的查詢返回,我可以運行創造我非規格化視圖代碼:
select RUN_THIS
from (
select RUN_THIS, RN
from (
select 'select EMAIL_DATE ' (varchar(100)) as RUN_THIS
, 0 (int) as RN
) x
union all
select ', sum(case when SNAP_DATE = date '''
|| (SNAP_DATE (format 'yyyy-mm-dd') (char(10)))
|| ''' then FREQ else 0 end) as D'
|| (SNAP_DATE (format 'yyyymmdd') (char(8))) as RUN_THIS
, row_number() over (partition by 1 order by SNAP_DATE) as RN
from (select distinct SNAP_DATE
from MYTABLE
where SNAP_DATE > current_date - 30) t1
union all
select RUN_THIS, RN
from (
select 'from MYTABLE group by 1 order by 1;' as RUN_THIS
, 10000 as RN
) y
) t
order by RN
我上面的查詢結果導出到我的客戶端上的一個文件,然後轉身和提交文件回到Teradata的。我希望有一些方法可以將這個完整的定義存儲在某個Teradata對象中,以便它可以直接執行。
我從來沒有使用過存儲過程。你能分享一個簡單的例子,既可以創建一個並使用它?我可以使用文檔,但我不確定在哪裏尋找。 – BellevueBob
我已經添加了一個可以讓你開始的例子。如果您還有其他問題,請告訴我。 –