達夢:存儲過程實現多個用戶之間表的授權

一、背景

? ? ? ?在某項目現場,開發商想實現4個用戶之間能互相擁有表的查詢、刪除、插入、更新權限和存儲過程的執行權限。此過程只要在新增表之后,其他用戶的權限需要授權,如果是手動寫,一張表的授權就要寫至少3次sql語句,如果多了,容易疏漏。

????????了解到新建表屬于低頻且由人工操作,因此提供了一個存儲過程給對方,讓對方建完表之后,手動執行下對應的存儲過程即可。

二、需求

有四個用戶:user1,user2,user3,user4能互相操作表的增刪改查權限。

三、思路

使用 2 張配置表,列舉出授權的組合情況。使用存儲存儲過程中的游標遍歷列表并執行授權語句。【此方法同樣使用4個以上的用戶兩兩授權的情況】

四、步驟

4.1 初始化數據

--初始化插入用戶信息
CREATE TABLE temp_user_list (value VARCHAR(10));
INSERT INTO temp_user_list VALUES ('USER1'), ('USER2'), ('USER3'), ('USER4');
COMMIT;--初始化數據,兩兩組合,為了實現授權
--DROP if exist  TABLE "SYSDBA"."PRIV_OWNER_LIST" ;
CREATE  TABLE "SYSDBA"."PRIV_OWNER_LIST"
(	ID INT IDENTITY(1,1),"P_USER" varCHAR(20) NOT NULL ,"S_USER" varCHAR(20) NOT NULL  
);insert into "SYSDBA"."PRIV_OWNER_LIST" (P_USER,S_USER)
SELECT t1.value AS value1, t2.value AS value2
FROM  temp_user_list t1
CROSS JOIN  temp_user_list t2
WHERE  t1.value <> t2.value ;
commit;SELECT * FROM "SYSDBA"."PRIV_OWNER_LIST" ;

4.2? 創建存儲過程實現語句

create or REPLACE PROCEDURE sysdba.PROC_MAIN_PRIV (SOURCE_USER varchar(100),TARGET_USER varchar(100) )is --授予用戶表的所有權限begin DECLARESQLSTMT STRING;SQLSTMT_PROC STRING;CURSOR CUR FOR SELECT ID,NAME  FROM SYSOBJECTS  WHERE  TYPE$ = 'SCHOBJ' AND SUBTYPE$ IN ('STAB','UTAB')  AND (PID=-1 OR PID=0) AND  SCHID=(SELECT ID FROM SYSOBJECTS WHERE TYPE$='SCH' AND NAME=SOURCE_USER );TYPE MYREC IS CUR%ROWTYPE;REC_V MYREC;BEGINFOR REC_V IN CUR LOOPSQLSTMT = 'grant SELECT,INSERT,DELETE,UPDATE ON '||SOURCE_USER||'.'|| '"'||REC_V.NAME ||'"' || ' to ' || TARGET_USER ||';';EXECUTE IMMEDIATE SQLSTMT;--PRINT SQLSTMT;END LOOP;COMMIT;
END;--授予用戶存儲過程執行權限
DECLARESQLSTMT_PROC STRING;CURSOR CUR FOR SELECT  SUBTYPE$ ,ID,NAME ,*  FROM SYSOBJECTS  WHERE  TYPE$ = 'SCHOBJ'   AND SUBTYPE$ IN ('PROC')  AND   SCHID=(SELECT ID FROM SYSOBJECTS WHERE TYPE$='SCH' AND NAME=SOURCE_USER);TYPE MYREC IS CUR%ROWTYPE;REC_V MYREC;BEGINFOR REC_V IN CUR LOOPSQLSTMT_PROC = 'grant EXECUTE ON '||SOURCE_USER||'.'|| '"'||REC_V.NAME ||'"' || ' to ' || TARGET_USER ||';';EXECUTE IMMEDIATE SQLSTMT_PROC;--PRINT SQLSTMT_PROC;END LOOP;COMMIT;
END; end;

?4.3 創建存儲過程遍歷列表執行授權

--遍歷表"SYSDBA"."PRIV_OWNER_LIST"中的用戶進行授權
create or replace PROCEDURE sysdba.pro_grant_all_priv ()
iscursor user_priv_list isselect P_USER,S_USER from "SYSDBA"."PRIV_OWNER_LIST";beginfor  cur_user  in user_priv_list loopBEGINcall sysdba.proc_main_priv (cur_user.P_USER,cur_user.S_USER);end ;end loop;end;--任意具備此尋出過程執行權限的用戶調用即可完成授權 
call  sysdba.pro_grant_all_priv ();

?4.4 授權4個用戶相關表和存儲過程的相應權限

--把執行存儲過程的權限給  user1,user2,user3,user4 這4個用戶 grant EXECUTE ON  sysdba.pro_grant_all_priv to user1;
grant EXECUTE ON  sysdba.pro_grant_all_priv to user2 ;
grant EXECUTE ON  sysdba.pro_grant_all_priv to user3 ;
grant EXECUTE ON  sysdba.pro_grant_all_priv to user4;grant EXECUTE ON  sysdba.PROC_MAIN_PRIV to user1;
grant EXECUTE ON  sysdba.PROC_MAIN_PRIV to user2 ;
grant EXECUTE ON  sysdba.PROC_MAIN_PRIV to user3 ;
grant EXECUTE ON  sysdba.PROC_MAIN_PRIV to user4;--把表的增刪改查權限給4個用戶
grant select,update,delete,insert  ON  "SYSDBA"."PRIV_OWNER_LIST" to user1;
grant select,update,delete,insert  ON  "SYSDBA"."PRIV_OWNER_LIST" to user2;
grant select,update,delete,insert  ON  "SYSDBA"."PRIV_OWNER_LIST" to user3;
grant select,update,delete,insert  ON  "SYSDBA"."PRIV_OWNER_LIST" to user4;

以上就是需求的實現過程

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/95474.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/95474.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/95474.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

協議分析基礎

0x01 協議分析基礎 網絡安全領域的“基本功”&#xff1a;一切高級攻擊&#xff08;漏洞利用、DDoS、滲透等&#xff09;都體現為網絡流量的異常。 核心價值&#xff1a; 故障排查 &#xff1a; 定位網絡延遲、丟包、無法連接等問題。性能優化 &#xff1a; 分析應用性能瓶頸。…

AI生成內容的版權迷局:GPT-4輸出的“創意”版權風險與規避之道

大型語言模型&#xff08;LLM&#xff09;如 GPT-4&#xff0c;正以前所未有的速度和創造力&#xff0c;改變著內容生產的方式。無論是文章、代碼、圖片還是音樂&#xff0c;AI都能快速生成令人驚嘆的作品。然而&#xff0c;在這股“AI內容創作浪潮”之下&#xff0c;一個嚴肅的…

編程與數學 03-004 數據庫系統概論 19_數據庫的分布式查詢

編程與數學 03-004 數據庫系統概論 19_數據庫的分布式查詢一、分布式查詢的概念&#xff08;一&#xff09;分布式查詢的定義&#xff08;二&#xff09;分布式查詢的特點二、分布式查詢的優化&#xff08;一&#xff09;查詢分解&#xff08;二&#xff09;查詢分配&#xff0…

java--寫在 try 中的創建連接

1. 背景 在 Java 開發中&#xff0c;很多資源&#xff08;數據庫連接、ZooKeeper 連接、Redis 客戶端、文件流等&#xff09;都需要手動關閉。如果忘記關閉&#xff0c;會導致 資源泄漏&#xff08;連接占滿、內存泄漏、文件句柄耗盡等&#xff09;。 為了避免這種問題&#xf…

蔡文勝在香港買了一棟樓,免費給創業者辦公

蔡文勝在香港買了一棟樓&#xff0c;免費給創業者辦公。前段時間&#xff0c;蔡文勝出售美圖公司、套現約8億港幣后&#xff0c;以6.5億港元購入香港天后道上全幢物業&#xff0c;并將其更名為“CAI大廈”。一樓是咖啡廳&#xff0c;二樓做公眾活動&#xff0c;樓上會有兩層會開…

FOC+MCU:重新定義吸塵器電機控制——高效、靜音、智能的終極解決方案

傳統吸塵器電機的“三重困境”當前吸塵器市場&#xff0c;消費者對吸力、噪音、續航的訴求日益嚴苛&#xff0c;但傳統電機控制方案&#xff08;如方波驅動、有感/無感BLDC控制&#xff09;難以兼顧&#xff1a;效率低下&#xff1a;高速運行時電機發熱嚴重&#xff0c;電池能量…

樹形組件,支持搜索展示,自定義展示,支持vue2,vue3,小程序等等

效果圖平臺兼容性Vue2Vue3ChromeSafariapp-vueapp-nvueAndroidiOS鴻蒙√√√√√√---微信小程序支付寶小程序抖音小程序百度小程序快手小程序京東小程序鴻蒙元服務QQ小程序飛書小程序快應用-華為快應用-聯盟√√√√√√-√√√√多語言暗黑模式寬屏模式√屬性屬性名類型默認值…

元宇宙與教育變革:沉浸式學習重構知識獲取與能力培養

1 元宇宙打破傳統教育的核心局限1.1 突破空間限制&#xff1a;從 “固定教室” 到 “全域學習場景”傳統教育受限于物理空間&#xff0c;優質資源集中在少數學校與城市&#xff0c;而元宇宙通過 “虛擬場景復刻 跨地域實時交互”&#xff0c;將學習空間拓展至全球乃至虛擬維度…

如何在SpringBoot項目中優雅的連接多臺Redis

如何在SpringBoot項目中優雅的連接多臺Redis 在Spring Boot項目中&#xff0c;連接單個Redis實例是常見需求&#xff0c;但有時需要同時連接多個Redis實例&#xff08;例如&#xff0c;主Redis用于業務數據存儲&#xff0c;另一個Redis用于爬蟲數據緩存&#xff09;。本文將基于…

追覓科技舉辦2025「敢夢敢為」發布會,發布超30款全場景重磅新品

上海&#xff0c;2025年9月4日——在以「敢夢敢為」為主題的2025新品發布會上&#xff0c;追覓科技一次性發布超30款新品&#xff0c;全面涵蓋智能清潔、智能家電、家庭健康與個護等核心領域。在清潔家電與大家電“高端智能生態矩陣”已然成型的當下&#xff0c;追覓科技正在邁…

去服務器化的流媒體分發:輕量級RTSP服務的技術邏輯與優勢

一、設計背景&#xff1a;RTSP/RTP協議的技術根基 在流媒體傳輸體系中&#xff0c;RTSP&#xff08;Real-Time Streaming Protocol&#xff09; RTP/RTCP 組合被廣泛認為是最經典、最標準化的解決方案。 RTSP 作為應用層協議&#xff0c;本質上是一個 遠程會話控制協議。它通過…

mysql分頁SQL

在 MySQL 中&#xff0c;實現分頁查詢通常使用 LIMIT 子句。LIMIT 可以指定返回結果的起始位置和數量&#xff0c;非常適合實現分頁功能。 基本語法如下&#xff1a; SELECT 列名 FROM 表名 WHERE 條件 ORDER BY 排序字段 [ASC|DESC] LIMIT 起始位置, 每頁顯示數量;說明&#x…

刷新記錄:TapData Oracle 日志同步性能達 80K TPS,重塑實時同步新標準

在當前數據驅動的企業環境中&#xff0c;高效、穩定的數據同步能力已成為支撐關鍵業務系統的核心需求。尤其在高頻變更、大量增量數據的業務場景中&#xff0c;傳統的 Oracle 日志解析方案往往在吞吐能力和延遲控制方面力不從心。 隨著企業全面邁入“實時化”時代&#xff0c;金…

Java全棧開發面試實戰:從基礎到高并發的深度解析

Java全棧開發面試實戰&#xff1a;從基礎到高并發的深度解析 在一次真實的面試中&#xff0c;一位擁有5年全棧開發經驗的程序員&#xff0c;面對來自某互聯網大廠的技術面試官&#xff0c;展現出了扎實的基礎與豐富的項目經驗。以下是這次面試的完整記錄。 面試官開場 面試官&a…

【mac】如何在 macOS 終端中高效查找文件:五種實用方法

【mac】如何在 macOS 終端中高效查找文件&#xff1a;五種實用方法 在 macOS 上&#xff0c;終端是一個強大的工具&#xff0c;不僅可以執行命令&#xff0c;還能幫助你快速找到需要的文件。無論是按文件名、類型、大小&#xff0c;還是文件內容搜索&#xff0c;都有多種命令可…

React筆記_組件之間進行數據傳遞

目錄父子組件傳值- props父傳子子傳父嵌套組件傳值-Context API概念React.createContext APIProvider組件正確示例錯誤示例消費 ContextReact.Consumer組件useContext Hook區別使用場景舉例說明-用戶信息狀態管理-Redux父子組件傳值- props 在React中父子組件傳值是單向數據流…

Elixir通過Onvif協議控制IP攝像機,擴展ExOnvif的攝像頭停止移動 Stop 功能

ExOnvif官方文檔 在使用 Elixir 進行 IPdome 控制時&#xff0c;可以使用 ExOnvif 庫。 ExOnvif官方文檔中未給停止移動調用命令&#xff0c;自己按照onvif協議 Onvif協議 擴展的此項功能&#xff1b; 停止移動 Stop 在Onvif協議中&#xff0c;用于停止云臺移動的操作為Stop…

spring boot autoconfigure 自動配置的類,和手工 @configuration + @bean 本質區別

它們在本質功能上都是為了向 Spring 容器注冊 Bean&#xff0c;但在觸發方式、加載時機、可控性和適用場景上有明顯區別。可以這樣理解&#xff1a;1?? 核心區別對比維度Configuration Bean&#xff08;手工配置&#xff09;Spring Boot EnableAutoConfiguration / 自動配置…

論文解讀 | Franka 機器人沉浸式遠程操作:高斯濺射 VR 賦能的遙操框架研發與應用

研究背景 在工業制造、危險環境作業等領域&#xff0c;機器人遠程操作技術是突破人類作業邊界的關鍵手段。傳統遠程操作依賴2D 相機反饋與操縱桿控制&#xff0c;存在空間感知差、操作精度低、沉浸感弱等問題&#xff0c;難以滿足復雜移動操作任務需求。 例如在核設施退役、災后…

【Unity Shader學習筆記】(四)Shader編程

一、OpenGL與DirectX 這是計算機圖形學中兩個最核心的應用程序接口(API),它們充當了應用程序與顯卡硬件之間的橋梁,讓開發者能夠調用GPU進行圖形渲染和通用計算。 特性維度 OpenGL DirectX 主導公司 Khronos Group (原SGI) Microsoft