1
我需要爲知道自己在做什麼的內部用戶構建瘋狂靈活的存儲過程。這些人是整天住在SQL * Plus窗口中的人,他們會突然被迫使用網頁表單。超靈活的Oracle存儲過程/動態SQL?
這些用戶將被提供的表格,通過檢查程序的元數據,在那裏他們將能夠執行看起來像這樣的存儲過程創建:
create or replace
PROCEDURE DEV_UPDATE_TABLE_FOO
(
SET_FIELD IN VARCHAR2
, SET_VALUE IN VARCHAR2
, WHERE_CLAUSE IN VARCHAR2
) AS
BEGIN
UPDATE foo
SET <SET_FIELD>=<SET_VALUE>
where <WHERE_CLAUSE>;
END DEV_UPDATE_TABLE_FOO;
對於一些快速搜索,我沒有看到這可能不會造成問題,「提供一個通過檢查程序元數據創建的表單」是問題的一部分。
基本上鼓勵SQL注入。這意味着,我們希望這些人能夠用他們選擇的價值更新他們選擇的單個領域,並創建他們設定的條款。他們將不得不引用值爲VARCHAR2的字符串等。
然而,所有可用於繪製表單的UI都是元數據。其他存儲過程將更加靜態和明智。那些很簡單。
任何想法?答案顯然是「只是讓他們有機會到SQL * Plus,或的SQLDeveloper等不可能很遺憾。提前
謝謝...
我不清楚你想要解決什麼問題,你可以使用'EXECUTE IMMEDIATE'或'DBMS_SQL'來生成和執行一個動態SQL語句,但是這聽起來像是你的問題與檢查元數據有關聽起來不像的程序您關心的是如何實現生成動態SQL的過程。 –