我有n個輸入參數,以我的程序&我必須對所有這些變量執行一些操作:如何考慮價值的Varchar變量作爲新變量
代碼:
DECLARE
p_Input1 VARCHAR2(10) := 'Nagendra';
p_Input2 VARCHAR2(10) :='';
p_Input3 VARCHAR2(10) :='Nagendra';
p_Input4 VARCHAR2(10) :='';
Temp_Input_Variable VARCHAR2(12);
Temp_Output_Variable VARCHAR2(12);
BEGIN
For i IN 1..4
Loop
Temp_Input_Variable := 'p_Input'||i;
IF (Temp_Input_Variable IS NOT NULL) THEN
DBMS_OUTPUT.PUT_LINE('Variable '||Temp_Input_Variable||' Is Not Null');
ELSE
DBMS_OUTPUT.PUT_LINE('Variable '||Temp_Input_Variable||' Is Null');
END IF;
END LOOP;
END;
輸出:
Variable p_Input1 Is Not Null
Variable p_Input2 Is Not Null
Variable p_Input3 Is Not Null
Variable p_Input4 Is Not Null
預期輸出:
Variable p_Input1 Is Not Null
Variable p_Input2 Is Null
Variable p_Input3 Is Not Null
Variable p_Input4 Is Null
這裏的問題是,每當我檢查Temp_Input_Variable IS NOT NULL
時,它只是檢查變量的值是否爲空,這是正確的。
但是,而不是這個,我想使用這個變量的值作爲新變量,而不是空應該應用於此。
所以Temp_Input_Variable IS NOT NULL
應被視爲p_Input1 IS NOT NULL
不喜歡'p_Input1' IS NOT NULL
所有這一切都在循環&避免重複工作/代碼執行所有這些操作。
請推薦。
更新: 感謝您的建議。
我有大約30個輸入&未來可能會改變。
所以我要找的是撥打像Work(P_InputN)
這樣的循環,而不是調用Work(p_Input1)
Work(P_Input2)
等等。
即使代碼工作將是相同的,但我個人認爲與循環代碼是良好的外觀&感覺。
不能動態地那樣形成一個變量。據我所知,你想動態地將一個靜態'p_inputN'變量的值賦給'Temp_Input_Variable',否則不能這樣做。其中一個選擇是使用集合。創建一個集合,集合的每個元素將代表你的'pinputN'變量,然後循環訪問該集合,將其元素分配給'Temp_Input_variable'變量,如果你真的需要的話。 –