簡體   English   中英

使用存儲過程創建視圖 Oracle

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM