1. 程式人生 > >執行儲存過程 沒有許可權???

執行儲存過程 沒有許可權???

SQL> create or replace procedure insert_table_by_condition( table_name varchar2,log_name varchar2 ,HIS_name varchar2,mid_name varchar2 ,v_mid number ,v_start number,v_end number) is
  2   PRAGMA AUTONOMOUS_TRANSACTION;
  3     totoalcount number;
  4     m number;
  5     i number;
  6     v_count number;
  7     begin
  8     m :=v_mid;
  9     i := v_start;
 10     totoalcount:=v_end;
 11     select sum(1) into v_count from boswll.TABLE_LOG where  name=log_name;
 12     if v_count=0 then
 13     insert into boswll.TABLE_LOG values(log_name,0);
 14     commit;
 15     end if;
 16     if totoalcount > 0 then
 17    while i <= totoalcount+m loop
 18    execute immediate 'insert into bosdata.' || HIS_name||' select * From bosdata.' || table_name||' where rowid in (select w_rowid from BOSWLL.'||mid_name ||' s where s.nmm >=' ||i|| ' and s.nmm
 19  <'||i||' + '||m||') ';
 20    update boswll.TABLE_LOG set zs=i where name=log_name;
 21    commit;
 22    i := i + m;
 23    end loop;
 24    end if;
 25    END;
 26  /


過程已建立。


SQL> exec insert_table_by_condition ('PD_WO','PD_WO','PD_WO_HIS','PD_WO_T',100,1,400);
BEGIN insert_table_by_condition ('PD_WO','PD_WO','PD_WO_HIS','PD_WO_T',100,1,400); END;


*
第 1 行出現錯誤:
ORA-01031: 許可權不足
ORA-06512: 在 "BOSWLL.INSERT_TABLE_BY_CONDITION", line 18
ORA-06512: 在 line 1

SQL> select * From dba_role_privs where grantee='BOSWLL';
GRANTEE                        GRANTED_ROLE                   ADM DEF
------------------------------ ------------------------------ --- ---
BOSWLL                         RESOURCE                       NO  YES
BOSWLL                         CONNECT                        NO  YES
BOSWLL                         DBA                            NO  YES


SQL> select * From dba_role_privs where grantee='BOSDATA';
GRANTEE                        GRANTED_ROLE                   ADM DEF
------------------------------ ------------------------------ --- ---
BOSDATA                        DBA                            NO  YES
BOSDATA                        RESOURCE                       NO  YES
BOSDATA                        CONNECT                        NO  YES

為什麼有了dba許可權,在執行儲存過程的時候還是報沒有許可權,並且單獨拿出insert 執行也是沒有問題的,最後發現,執行儲存過程中的許可權必須是顯示的給許可權

SQL> grant insert any table to boswll;
Grant succeeded.


SQL> grant insert any table to bosdata;
Grant succeeded.

SQL> exec insert_table_by_condition ('PD_WO','PD_WO','PD_WO_HIS','PD_WO_T',100,1,400);
PL/SQL 過程已成功完成。




相關推薦

執行儲存過程 沒有許可權???

SQL> create or replace procedure insert_table_by_condition( table_name varchar2,log_name varchar2 ,HIS_name varchar2,mid_name varchar2

【Mysql】MySQL 使用者執行儲存過程許可權

問題 執行儲存過程報錯: 原因 查詢資料: 1305錯誤,由於當前使用者沒用許可權,對使用者進行授權後可以執行。 解決 alter routine---修改與刪除儲存過程/函式 create routine--建立儲存過程/函式 execute--呼叫

ORACLE執行儲存過程許可權不足

ORACLE新建了一個儲存過程,裡面包含CREATE和DROP,逐條依據可以執行,但是執行整個儲存過程報許可權不足的錯誤。 在網上看到,Oracle規定,在預設的情況下,在呼叫儲存過程使用者的角色不

轉!mysql 命令列下 通過DELIMITER臨時改變語句分隔符 執行儲存過程

mysql 在 Navicat 介面工具 執行儲存過程ok,但是在命令列下執行失敗。 原因在於,預設的MySQL語句分隔符為' ; ',在輸入' ; '的時候,“以為”語句已經結束了,但實際上語句還沒有結束。 解決方案:使用DELIMITER臨時改變命令列的語句分隔符,在儲存過程建立之後再修改分隔符為原來

執行儲存過程,報錯提示 找不到儲存過程

原因: SQL Server 客戶端, 在連線到 SQL Server 資料庫以後。會自動讀取 資料庫的 資料字典資訊。也就是 當前資料庫,有哪些表/欄位/檢視/儲存過程等基礎資訊。儲存在客戶端的記憶體裡面。這樣。當你在客戶端輸入 SQL 語句的時候,輸入 表名字.會自動彈出 這個表的欄位列表,

執行儲存過程時,返回引數示例程式碼

//引數 SqlParameter[] fparams = new SqlParameter[7]; fparams[0] = new SqlParameter("@ID", ID); fparams[

MySQL-SQLyog執行儲存過程儲存函式等

1.開啟SQLyog在目錄樹-函式(儲存過程)資料夾上右鍵,建立函式(建立儲存過程) 2.按照MySQL定義函式的規則,新定義一個函式:   3. 然後新建查詢編輯器,呼叫自定義的函式。 命令:SELECT function_name(params1, ...),函式名稱

SQLSERVER 連結伺服器執行儲存過程

1.建立連結伺服器 exec sp_addlinkedserver 'server_tmp','','SQLOLEDB','192.168.1.1' -- server_tmp 為別名 exec sp_addlinkedsrvlogin 'server_tmp','false',null,'sa','

Oracle job 定時執行 儲存過程

一:簡單測試job的建立過程案例: 1,先建立一張JOB_TEST表,欄位為a 日期格式 SQL> create table JOB_TEST(a date); Table created SQL> commit; Commit complete

thinkphp5 連線 SqlServer 執行儲存過程,返回為空解決方案

專案做在win下,伺服器是類似空間伺服器,所以不可以裝擴充套件,只能yum 老闆又非要用雙資料庫(sqlsever 心酸里程) ,結果就是伺服器sqlsrv 不可用,裝的是dblib  ......云云雲 水準不高 ,只能用最簡單的方法 。 貼程式碼記錄一下,返回結果成功

定時執行儲存過程

需求:客戶要求把A系統出來的一些資料每月底同步到指定表(在A系統資料庫)中。 實現方案:往指定表插資料採用儲存過程(procA)。每月底執行採用windows任務定時或“SQL Server代理——作業”實現。 怎麼使用windows自帶任務定時執行bat實現上述需求? 1、先建

oracle執行儲存過程返回遊標cursor

create or replace procedure TEST(s varchar2, r_result out sys_refcursor) is   --作者:lml   --功能:根據tokenid查詢放行指令   --詳情:   --1.返回放行指令   --時間

sybase執行儲存過程的方法

如題第一種: 如果安裝了dba客戶端的話,開啟isql查詢分析器: 輸入helloworld '2012-4-8','2012-4-9',0 結果: 注意這是有引數的儲存過程,由於受mysql、影響我剛剛是這樣輸入的helloworld ('2012-4-8','2012-

PLsql中執行儲存過程的方法

1、在sqlplus命令列介面使用"EXECUTE"命令(簡寫做"EXEC")執行[email protected]> exec proc_helloworldHello World!PL/SQL procedure successfully complet

GRANT 給儲存過程許可權

    周所周知,grant是給別的使用者賦許可權。他不只能夠給表,檢視賦許可權,而且對儲存過程,方法,以及包都可以,具體語法參考如下:     1.grant給表賦許可權:     grant  select/update on  table to user;    

Oracle如何執行儲存過程

示例:有如下建立索引的儲存過程 --procedure create_index create or replace procedure create_index(indexName in varch

怎麼在plsql中執行儲存過程

1寫一個簡單的儲存過程 CREATE OR REPLACE PROCEDURE aaa(rs_cursor out TYPES.REFCURSOR)  AS BEGIN open rs_cursor for select *  from user; END; 2在plsq

Oracle定時任務執行儲存過程帶引數

儲存過程: create or replace procedure pro_test (retCode out number, retMsg out varchar2) is  vcrm v_prod_inst%ROWTYPE; TYPE ref_cursor_type I

EF中執行儲存過程,獲取output返回值

<span style="color: rgb(75, 75, 75); font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20.8px;">EF不

sql計算時間差執行儲存過程

<pre name="code" class="sql">-- datediff( day, '比較時間', GETDATE() )DECLARE @ctime INT SELECT @c