執行儲存過程 沒有許可權???
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