假設我有一個表:SQL列名稱與PL/SQL變量名稱相同 - 如何在select語句中完成此操作?
create table foo (
col_1 number;
col_2 number;
);
然後,我有以下代碼
declare
col_1 number;
col_2 number;
begin
col_1 := 1;
select col_2 into col_2 from foo where col_1 = col_1;
end;
當然如預期這將無法工作。如何在不需要更改變量名稱的情況下使其工作?
我認爲你不能; [文檔](http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/nameresolution.htm#LNPLS2038)說:「如果一個SQL語句引用同時屬於列和本地變量或形式參數,那麼列名優先。「 – Aleksej
即使你可以規避這種情況,將變量命名爲列名也是非常糟糕的做法......你只會對自己和任何繼承此代碼的人進行維護。大多數商店通常決定使用v_作爲變量的前綴標準化。 –
@KrisJohnston - 我知道這是不好的做法。我剛剛寫了一些實驗性代碼,並沒有預期使用特定的表格。我希望能夠快速修復,以確保它在重構代碼之前能夠正常工作。 –