1樓:匿名使用者
這種情況屬於插入資料後,沒有提交(commit),導致表被鎖,所以需要進行提交(commit)或者回滾(rollback)操作。
如果當前session已關閉,可通過如下方法殺掉程序。
1、生成kill session語句
select 'alter system kill session ''' || sid ||',' || serial# || ''';' from
(select distinct a.sid, a.serial#, status, machine, lockwait, logon_time
from v$session a, v$locked_object b
where (a.status = 'active' or a.status = 'inactive')
and a.sid = b.session_id
and b.oracle_username='xyhistest'--加上使用者名稱是避免把其他系統的會話也關閉,以免傷及無辜
2、批量執行第一步生成的語句
alter system kill session 'sid,serial#';
2樓:一個小鹹魚
你那段sql是往tab_name 表裡查資料,test1表當然沒資料了
oracle 儲存過程 如何實現插入資料時出錯後,但還繼續執行 5
3樓:匿名使用者
begin
insert …… ;--可能出錯的地方
exception
when others then
null;--出錯後跳到這裡來。
end;
將可能出錯語句包裹起來,抓異常,不影響往下執行。
4樓:滿地圖找牙
一個sql文肯定實現不了這個功能,你可以分成三個sql執行,然後用exception捕捉異常。
sql server裡處理也一樣。
5樓:路下雨葉湘倫
用處理異常的方法就可以了啊
oracle 的儲存過程中 動態的建立一張表 然後插入一個變數到這個表中,表能動態的建立但是變數不能插入進去
6樓:
估計是缺少引號的緣故。v_name是varchar2的吧。
改成 execute immediate ' insert into addtopinfo values('||sysdate||',『『'||v_name||'』』)'; 試試,就是v_name變數在語句裡要有引號 。拼接字串時每兩個「'」 會被解析成為一個「'」
7樓:
即使不加引號也可以插入的 最多oracle會做個隱式轉換,這不會有問題 而且v_name本身就是char型別,根本不能存在轉換問題
我有個疑問p_addstaffnum 這個是樓主幹什麼用的?
至於報錯的問題樓主少了分號和commit才是關鍵!
8樓:我又強力了
過程裡面建表 需要commit後才能插入吧
9樓:
1、execute immediate ' insert into addtopinfo values('||sysdate||','||v_name||')'; v_name 既然是變數 怎麼可能會用' '括號起來;
就算是 直接執行 的話 也是 execute immediate ' insert into addtopinfo values(sysdate,v_name);
2、如果有v_name的話 ,我建議你一般用拼sql的方式來執行
例如 如下格式(這個是我自己的procedure擷取的,可以參考下)
v_createsql := ' create table ' ||vv_owner||'.'|| vv_name_temp ||
' as select * from ' || iv_name || ' where 1=0';
execute immediate v_createsql;
3、下次報錯,請把你的出錯情況提出來。我們怎麼知道什麼錯呢?
10樓:學習先知道
create table 表名 as select * from 表
在儲存過程裡面加 execute immediate
oracle 用儲存過程向表插入資料的問題 200
11樓:匿名使用者
實際上儲存過程向表中插入資料和sql執行的區別是不大的,只不過是儲存過程是用loop等迴圈插入,之後順序執行sql語句,不用命令列執行。
create or replace procedure insert_data_4_pressure_3
is--result1 varchar2(50);
var_num number;
begin
var_num:=1;
while
var_num< 1000000
loop
insert into rp_trans_log_day
(trans_time,
trans_province,
trans_type,
score_range,
rule_name,
trans_num)
select to_date('2013/10/29', 'yyyy-mm-dd'),
round(dbms_random.value(1, 300)) || '省',
round(dbms_random.value(1, 800)) || '型別',
round(dbms_random.value(1, 100)) || '風險分值',
round(dbms_random.value(1, 300)) || '規則名稱',
'1'from dual;
commit;
var_num:=var_num+1;
end loop;
end insert_data_4_pressure_3;
oracle資料庫刪除表中一條資料sql語句
sql delete from 資料庫.表名 where id 1 講解 如果不用跨庫,可以省略 資料庫 1代表唯一的一條記錄,是引數。delete from 表名 where 條件 mit 提交 保留表,只刪除資料 truncate table mytable 或者 delete from myt...
mysql查詢,某條記錄變化前最後一條資料和變化後的第一條資料,應該怎麼寫
不明白你需要的查詢結果是什麼,請舉例說明 mysql怎麼查詢一條記錄的前一條記錄和後一條記錄 上一條 select from 表 where 資料id 當前顯示資料id order by 資料 id asc limit 1 下一條 select from 表 where 資料id 當前顯示資料id ...
mysql如何只更新其中一條資料
select from student where o 比方說我要查詢 o 為空的就 寫一個where o 單引號中間要打一個空格鍵專 修改也一 樣,屬update zi set title 1 where title 單引號中間要打一個空格鍵 注意,資料庫中只識別單引號,不識別雙引號 update...