[英]Create view using stored procedure Oracle
我有一個人員列表,我想為每個人創建視圖。 如果我有 1 個人,我的觀點是:
CREATE VIEW PersonInfo AS (
SELECT * FROM People WHERE id = 1000
);
但實際上我有幾千人,我想在Oracle創建一個存儲過程為每個人創建視圖,但是我用的時候視圖名稱重復。 我該如何處理這個問題? 感謝您提前提供幫助。
您的目標很有趣(大概與培訓有關,但與真實場景無關),但是動態解決方案將通過使用 PL/SQL 的EXECUTE IMMEDIATE
來使用 for 循環處理,例如
SQL> CREATE OR REPLACE PROCEDURE Crt_People_Views AS
BEGIN
FOR p IN ( SELECT id FROM People )
LOOP
EXECUTE IMMEDIATE 'CREATE OR REPLACE VIEW PersonInfo_'||p.id
||' AS SELECT * FROM People WHERE id = '||p.id;
END LOOP;
END;
/
SQL> EXEC Crt_People_Views; -- call the proc. which will create the desired views
你想通過為每個人創建一個視圖來解決什么問題?
創建一個帶有參數 (person_id) 的單一視圖是否更有意義?
是這樣的嗎?
CREATE OR REPLACE VIEW VIEW_ABC (parm1 INTEGER) AS
SELECT *
FROM XYZ
WHERE ….
Call like this.
Then, all we need do is,
SELECT *
FROM VIEW_ABC (101)
/
沒有問題。 與綁定變量。 正如人們所期望的那樣很好地集成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.