Как запустить процедуру без параметра в Teradata - PullRequest
0 голосов
/ 25 сентября 2019

Как запустить процедуру без параметра в Teradata Я пытаюсь: call db1.proc_dbOSA()

Сообщение об ошибке:

Call failed 3707: PROC_DBOSA: Syntax error, expected something 
like a name or a Unicode delimited identifier between ‘(‘ and ‘)’

Новая процедура с результатом ошибки.Когда я запускаю только код, все работает нормально.

REPLACE PROCEDURE db1.proc_dbOSA()
BEGIN
    DELETE FROM db1.LOG_dbOSA;      
INSERT INTO
    db1.LOG_dbOSA
        (StoreNo, IDX, Flow, Status, MRP, OSA_IDX, OSA_AC)

WITH a AS (
SELECT    
    c.StoreCode,
    CAST(SUBSTRING(c.ArticleCode FROM 13 FOR 6) AS INT) AS IDX,
    RpType,
    CASE
        WHEN  c.MinimumTargetStockWrpl >= l.MinimumTargetStockWrpl THEN CAST(l.MinimumTargetStockWrpl AS INT)
        WHEN  c.MinimumTargetStockWrpl <  l.MinimumTargetStockWrpl THEN CAST(c.MinimumTargetStockWrpl AS INT)
    End AS StoreMin,
    c.ValUnrestrictedStock
FROM 
   db1.tab1 c
INNER JOIN
    (
    SELECT    
        StoreCode,
        ArticleCode,
        MinimumTargetStockWrpl    
    FROM 
        db1.tab1
    WHERE
        ProcessingDate = CURRENT_DATE - 14
    ) l ON c.StoreCode = l.StoreCode AND c.ArticleCode = l.ArticleCode
WHERE
    c.ProcessingDate = CURRENT_DATE AND c.MinimumTargetStockWrpl IS NOT NULL AND l.MinimumTargetStockWrpl IS NOT NULL AND l.MinimumTargetStockWrpl > 0
)

, t AS
(
SELECT    
    CAST(SUBSTRING(ArticleCode FROM 13 FOR 6) AS INT) AS IDX,
    RpType, 
    ArticlesPlanner
FROM 
    DWH_db_V.STK_B_ARTICLE_DAY_V
WHERE 
    ProcessingDate = CURRENT_DATE AND StoreCode = 'DR04'
)

SELECT 
    a.StoreCode,
    a.IDX,
    t.RpType,
    t.ArticlesPlanner,
    a.RpType,
    CASE
        WHEN a.ValUnrestrictedStock > 0 THEN 1
        WHEN a.ValUnrestrictedStock <= 0 THEN 0
    End AS OSA_IDX,
    CASE
        WHEN a.ValUnrestrictedStock >= StoreMin THEN 1
        WHEN a.ValUnrestrictedStock < StoreMin THEN 0
    End AS OSA_AC
FROM 
    a
LEFT JOIN
    t ON t.IDX = a.IDX;     
End;

BTEQ Ошибка: + --------- + --------- + -------- + --------- + --------- + --------- + --------- + ---- Вызовите proc_dbOSA;

Вызовите proc_dbOSA;$ * Сбой 3707 Синтаксическая ошибка, ожидалось что-то вроде '(' между словом 'proc_dbOSA' и ';'. Оператор # 1, информация = 18 * Общее время, прошедшее за 1 секунду.

Вызовите proc_dbOSA (); * Сбой 3707 PROC_DBOSA: синтаксическая ошибка, ожидалось что-то вроде имени или идентификатора с разделителями в кодировке Unicode между '(' и ')'. * Общее время, прошедшее за 1 секунду.

1 Ответ

0 голосов
/ 26 сентября 2019

Хранимые процедуры не поддерживают следующее:

Модификаторы запроса EXPLAIN и USING в хранимой процедуре

Оператор макроса EXECUTE

Предложение WITH в хранимой процедуре.

Хранимые процедуры, а также макросы не поддерживают следующие операторы ведения журнала запросов:

НАЧАТЬ ЗАПИСЬ ЗАПРОСОВ

ЗАПИСЬ КОНЕЧНЫХ ЗАПРОСОВ

ЗАПИСЬ ЗАПРОСОВ ПРОСМОТРА

ЗАМЕНА ЗАПИСИ ЗАПИСИ

...