Проблема передачи параметров в файл Oracle SQL внутри сценария оболочки
У меня действительно странная проблема
Мы вызываем один файл.sql с параметрами внутри файла хоста, sql имеет 5 параметров
sqlplus -s /nolog >> $APPL/$APPLLOG/l$req_id.req <<!
connect $userpass
@$XXBC_TOP/sql/POFTPGEN.sql $req_id $filename $utl_file_dir $vendor_num $org_id
!`
когда я печатаю с помощью echo, все параметры печатаются в файле журнала.
Проблема в файле POFTPGEN.sql &4
получает оба значения $vendor_num $org_id
например &4
проходит как 1031 506
и пятый параметр проходит как null
Может кто-нибудь помочь мне понять, что я здесь делаю не так.
Ожидаемое значение &4 должно быть 1031, а &5 должно быть 506
Текущее поведение &4 is 1031 506
и &5 null
Добавление части SQL
SET verify off;
PROMPT request id = &1
PROMPT zip file name = &2
PROMPT utl_file_dir = &3
PROMPT vendor number = &4
-- Added the parameter Org_Id by Yalla S. on 30-MAY-06
PROMPT Org_Id =&5
--
SELECT TO_CHAR (SYSDATE, 'DD-Mon-RR HH24:MI:SS') enter_time
FROM DUAL;
DEFINE req_id = &1
EXECUTE _set_client_info(&1);
PROMPT *** Current org_id...
SELECT USERENV ('CLIENT_INFO') Operating_Unit
FROM DUAL;
PROMPT
--
WHENEVER oserror exit failure rollback;
WHENEVER sqlerror exit failure rollback;
--
DEFINE zipfilename = '&2'
DEFINE utl_file_dir = '&3'
DEFINE vendor_number = '&4'
DEFINE org_id =&5
--
-- Start of Extract File Creation -- PH.txt and PL.txt
--
DECLARE
--
PROGRAM_NAME CONSTANT VARCHAR2 (30) := 'POFTPGEN';
P_PROC_MSG VARCHAR2 (100) := NULL;
--
-- utl_file handlers
uFileHandle_poh UTL_FILE.file_type;
uFileHandle_pol UTL_FILE.file_type;
--
vZipFileName CONSTANT VARCHAR2 (100) := '&2';
vFilePath CONSTANT VARCHAR2 (100) := '&3';
vVendorNumber CONSTANT VARCHAR2 (30) := '&4';
v_org_id NUMBER := &5;
vpohFile CONSTANT VARCHAR2 (30) := 'STMPH.TXT';
vpolFile CONSTANT VARCHAR2 (30) := 'STMPL.TXT';
--
vpohRec VARCHAR2 (1000) := NULL;
vpolRec VARCHAR2 (1000) := NULL;
--
vFldsep CONSTANT VARCHAR2 (1) := ',';
vFldQCsep CONSTANT VARCHAR2 (2) := '",';
vFldCQsep CONSTANT VARCHAR2 (2) := ',"';
Сообщения журнала
вызов SYMPOFTPGEN.sql для создания отдельных файлов...
req_id = 52964325
filename=R12SYMPOCN20170926@070020.ZIP
utl_file_dir = / data / SEBSD / xxbc_data / data / PO / CN / отправить ftpvendornum =
org_ID =6784
Продавец № 15163
Связано.
id запроса = 52964325
имя файла zip = R12SYMPOCN20170926@070020.ZIP
utl_file_dir = / data / SEBSD / xxbc_data / data / PO / CN / send
Введите значение 4: номер поставщика = 15163 6784
Введите значение для 5:
Пользователь запросил прерывание или EOF обнаружен.