Я создал хранимую процедуру в Teradata - SQL Assistant
Но я не могу это выполнить. У него 5 параметров, и мне нужно передать только 3 параметра в качестве входных данных.
REPLACE PROCEDURE proc_store_import
(
IN P1_PROC_TYPE VARCHAR(20),
IN P2_zone_name VARCHAR(20),
IN P3_Location_code INT,
IN P4_RolloutDate VARCHAR(20),
IN P5_Phase INT
)
BEGIN
declare O1_InsertStatus VARCHAR(250);
IF P1_PROC_TYPE = 'ADD-STORE' THEN
IF( ( SELECT Count(*) FROM dim_location WHERE location_code = P3_Location_code) >0 ) THEN
SET O1_InsertStatus = 'Requested Store is already a Store...!!!';
ELSE
INSERT INTO dim_location
(location_code, location_name, store_zone, region, area, opening_date, closing_date, isactive, dc_code,
city,dc_city,location_type,catchment,emailid,circle,business_zone,cluster_name,store_cluster,ofine_code,
region,new_date,rollout_Phase,createdDate,createdBy)
SELECT location_code, store_name, zone_name, region, area, opening_date, closing_date, isactive, dc_code,
city,dc_city,location_type,catchment,emailid,circle,business_zone,cluster_name,store_cluster,ofine_code,
region,P4_RolloutDate AS new_date,P5_Phase AS rollout_Phase,CURRENT_DATE AS createdDate,1 AS createdBy
FROM dim_location
WHERE location_code = P3_Location_code;
SET O1_InsertStatus = 'Store included to Store...!!!';
END IF;
END IF;
END;
приведу пример я пробовал что-то подобное не сработало
CALL proc_store_import( 'foo', 'bar', 42 , NULL ,NULL)это сработало, напишите это как ответ, плохо отметьте как ответ и проголосуйте за него





Просто передайте NULL для отсутствующих параметров:
CALL proc_store_import( 'foo', 'bar', 42 , NULL ,NULL)
Вы также можете обернуть его в макрос (с необязательными DEFAULT), а затем вы можете использовать именованные параметры:
REPLACE MACRO mac_store_import
(
P1_PROC_TYPE VARCHAR(20),
P2_zone_name VARCHAR(20),
P3_Location_code INT,
P4_RolloutDate VARCHAR(20),
-- P4_RolloutDate VARCHAR(20) DEFAULT '',
P5_Phase INT
)
AS
(
CALL proc_store_import(
:P1_PROC_TYPE,
:P2_zone_name,
:P3_Location_code,
:P4_RolloutDate,
:P5_Phase);
);
EXEC mac_store_import
( P1_PROC_TYPE = 'foo',
P3_Location_code = 42,
P2_zone_name = 'bar'
);
Кстати, ваш текущий SQL тоже можно написать прямо как макрос.
Просто передайте NULL для отсутствующих параметров.