Я хочу использовать переменные внутри моего макроса SQL на Teradata.Как использовать переменные в Teradata SQL Макросы
Я думал, что я мог бы сделать что-то вроде следующего:
REPLACE MACRO DbName.MyMacro
(
MacroNm VARCHAR(50)
)
AS
(
/* Variable to store last time the macro was run */
DECLARE V_LAST_RUN_DATE TIMESTAMP;
/* Get last run date and store in V_LAST_RUN_DATE */
SELECT LastDate
INTO V_LAST_RUN_DATE
FROM DbName.RunLog
WHERE MacroNm = :MacroNm;
/* Update the last run date to now and save the old date in history */
EXECUTE MACRO DbName.RunLogUpdater(
:MacroNm
,V_LAST_RUN_DATE
,CURRENT_TIMESTAMP
);
);
Однако, это не сработало, так что я думал об этом, вместо того, чтобы:
REPLACE MACRO DbName.MyMacro
(
MacroNm VARCHAR(50)
)
AS
(
/* Variable to store last time the macro was run */
CREATE VOLATILE TABLE MacroVars AS
(
SELECT LastDate AS V_LAST_RUN_DATE
FROM DbName.RunLog
WHERE MacroNm = :MacroNm;
)
WITH DATA ON COMMIT PRESERVE ROWS;
/* Update the last run date to now and save the old date in history */
EXECUTE MACRO DbName.RunLogUpdater(
:MacroNm
,SELECT V_LAST_RUN_DATE FROM MacroVars
,CURRENT_TIMESTAMP
);
);
Я могу делать то, что я ищет с сохраненной процедурой, однако я хочу избежать производительности.
У вас есть идеи по этому вопросу?
Есть ли что-нибудь еще, что я могу попробовать?
Приветствия
Tim
Из-за любопытства, какими проблемами с производительностью является ваш хранимый процесс, вызывающий? – lins314159