對於游標進於update(行鎖)的操作實驗
/*
declare
x number;
mc varchar(
);
cursor findtest is select id
myname from testtable FOR UPDATE;
begin
open findtest;
fetch findtest into x
mc;
UPDATE testtable SET myname =
myid
WHERE CURRENT OF findtest;
DBMS_OUTPUT
PUT_LINE(SQL%ROWCOUNT);
close findtest;
update testtable set myname=
ss
where id>
;
DBMS_OUTPUT
PUT_LINE(
更新了
||SQL%ROWCOUNT||
條數據
);
end;
*/
/
create or replace procedure debugout(mydir varchar
myfile varchar
myinfo varchar) as
進行文件寫的存儲過程
調用方式 debugout(目錄名
文件名
字符串)
注意:oracel對於plsql的文件操作默認是不能對文件進行操作的
所以按下列步驟進行設定
關閉數據庫修改initsid
ora文件
在文件中增加utl_file_dir參數
其值為目錄名
例如對於windows c: c:\xx unix 為/tmp /tmp/xx
檢查目錄的文件系統
確定oracle用戶是否有關於該文件路徑的讀寫權限
若不具有
則通過chmod
filepath
再啟動數據庫
這樣
存儲過程就能夠正常的生成和讀取文件了
V_NewLine varchar(
);
v_FileHand UTL_FILE
FILE_TYPE;
文件句柄
begin
v_FileHand:=UTL_FILE
FOPEN(mydir
myfile
a
);
w 為寫 r為讀 a添加(文件不存在
自生成)
UTL_FILE
PUT_LINE(v_FileHand
to_char(sysdate
yyyy
mm
dd hh
:mi:ss
) || myinfo);
UTL_FILE
FCLOSE(v_FileHand);
exception
when UTL_FILE
INVALID_OPERATION then
raise_application_error(
文件不能打開
);
when UTL_FILE
INVALID_FILEHANDLE then
raise_application_error(
文件句柄不是打開的文件
);
when UTL_FILE
WRITE_ERROR then
raise_application_error(
寫操作失敗
);
when UTL_FILE
INVALID_PATH then
raise_application_error(
文件或目錄寫操作失敗
);
end;
/
可以執行DDL及DML語句的存儲過程
CREATE OR REPLACE PROCEDURE PEXESQL(s
varchar
) as
i integer;
r integer;
begin
可以執行insert
update
delete(事物不提交)
如果是create table等命令要明文授於系統權限
對於drop table不用
i:=dbms_sql
open_cursor;
dbms_sql
parse(i
s
dbms_sql
v
);
r:=dbms_sql
execute(i);
commit;
dbms_sql
close_cursor(i);
exception when others then
dbms_output
put_line(
系統出了錯
);
if dbms_sql
is_open(i) then
dbms_sql
close_cursor(i);
end if;
raise輸出詳細出錯信息
raise;
dbms_output
put_line(
系統出了錯了
SQLCODE=
||sqlcode||
sqlerrm=
||sqlerrm);
end;
/*
p
不能安ORACEL的問題
原因
Any platform that uses the Intel Pentium
processor
with the
Sun JRE and Symmantec JIT will encounter this problem
Windows NT
Windows
and NetWare platforms are confirmed to be affected
解決辦法
建個臨時目錄
將oracle安裝盤拷貝到該目錄中
在該目錄中搜索symcjit
dll (我找到了兩個)
將symcjit
dll改名為symcjit
old
運行\install\win
目錄下的setup
exe 就應該可以了
*/
From:http://tw.wingwit.com/Article/program/Oracle/201311/17767.html