我正在嘗試編寫一個運行單個任意過程的sql * plus腳本。棘手的部分是我希望能夠運行該過程,而不管該過程需要多少個參數。是否可以通過編程在Oracle SQL * plus腳本中構造替換變量的名稱?
爲了找出正確的參數號的程序,我做了以下內容:
SELECT COUNT(*) INTO v_in
FROM all_arguments
WHERE LOWER(owner) = LOWER(v_schema)
AND LOWER(package_name) = LOWER(v_package)
AND LOWER(object_name) = LOWER(v_proc)
AND in_out = 'IN';
當談到時間來建立執行,立即串,我想用一些循環要做到這一點。參數全部正在通過編號,& 1到& n。
FOR i IN 1..v_in
LOOP
v_block := v_block || '''' || &i || '''';
IF i != v_in THEN
v_block := v_block || ',';
END IF;
END LOOP;
但這不起作用。它看到&我當然認爲它是一個名爲i的參數,並且由於調度應用程序(Appworx ...呃)沒有運行定義i =某事,所以這個失敗慘不忍睹。
有沒有什麼辦法可以做到這一點間接,這樣我可以迭代通過,但是很多對於給定的過程恰好是正確的?
下降的*&*從*我*?這只是一個變量,對吧? – 2012-07-18 20:23:52
是的,但我需要(在循環中)添加第四個參數,然後是第五個參數,然後是第六個參數,依此類推,直到我已經抓取了此腳本文件的所有參數。我需要一些擴展到&4,然後到&5等的東西。 – 2012-07-18 20:30:57