當前位置:首頁 » 存儲配置 » 存儲過程插入數據

存儲過程插入數據

發布時間: 2022-10-04 17:38:10

❶ oracle 用存儲過程向表插入數據的問題

實際上存儲過程向表中插入數據和sql執行的區別是不大的,只不過是存儲過程是用loop等循環插入,之後順序執行sql語句,不用命令行執行。

_data_4_pressure_3
is

--Result1VARCHAR2(50);
VAR_numnumber;
begin
VAR_num:=1;

while
VAR_num<1000000
LOOP
insertintorp_trans_log_day
(trans_time,
trans_province,
trans_type,
score_range,
rule_name,
trans_num)
selectto_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'
fromal;
commit;
VAR_num:=VAR_num+1;
<ahref="https://www..com/s?wd=end&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-"target="_blank"class="-highlight">end</a>loop;

<ahref="https://www..com/s?wd=end&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-"target="_blank"class="-highlight">end</a>insert_data_4_pressure_3;

❷ oracle存儲過程怎樣批量插入新數據

需要生成的SQL
insert into TMP_UPSTATE_CASEKEY values('TMP0000001', 1, sysdate);

存儲過程實現
create or replace procere proc_casekey_upstate
as
casekey char(14);
begin
for i in 1..10000000 loop
casekey := 'TMP'||lpad(i,7,0); -- TMP0000001
insert into TMP_UPSTATE_CASEKEY values(casekey, 1, sysdate);
end loop;
commit;
end;

begin
proc_casekey_upstate();
end;

測試發現生成一千萬條數據用了14分鍾左右,性能還是可以了,如果先去掉TMP_NUM_STATUS_ID的外鍵估計更快。
或者:
insert into TMP_UPSTATE_CASEKEY select 'TMP'||LPAD(rownum,7,0),1,sysdate from al connect by level <= 1000000;

❸ 怎麼寫存儲過程,向資料庫中批量插入數據

  1. 用循環語句生成欄位值insert

  2. SQL 如下:

createprocereInsertTest

as

begin

[email protected]

[email protected](20)

[email protected]=1

[email protected]<=100

begin

[email protected]=cast(@iASvarchar(20))

insertintotest(A,B,C,D)VALUES('a'[email protected],'b'[email protected],'ccccc','ddddd')

[email protected][email protected]+1

end

end

❹ 如何在存儲過程中實現插入更新數據

--先在資料庫中創建test表,表中有列名為name,類型為varchar(50)
然後先執行
create procere proc_insert
@name varchar(50)
as
begin
insert into test values(@name)--插入數據
end
go
create procere proc_update
@newname varchar(50),@oldname varchar(50)
as
begin
update test set [email protected] where [email protected]更新數據
end
go
--其中proc_insert為存儲過程名,可自定義 procere可使用簡寫proc
上面執行完成後調用存儲過程
exec proc_insert '曉華'--將"曉華"添加到test表中
exec proc_update '小明','曉華' --將表中'曉華' 改為'小明',必須與存儲過程變數順序相同
exec proc_update @oldname='小明',@newname='曉華'--與存儲過程變數順序可以不同

drop procere proc_insert 刪除存儲過程proc_insert

❺ 用存儲過程往表裡面插入數據,總是報錯,還請大俠幫忙看下錯在哪裡

因為在編譯前oracle會檢查test表是否存在,如果不存在就提示無視圖。
建議先重建一下這個表,每次操作前先執行drop table操作,然後在執行create table操作,這樣就能通過編譯。

代碼如下:
CREATE OR REPLACE PROCEDURE UP_TEST(STRBEGIN VARCHAR2,
STREND VARCHAR2,
OCUR OUT SYS_REFCURSOR) IS
V_I INT;
V_J INT;
ISQL VARCHAR2(200);
DPTABLE VARCHAR2(200) := 'drop table test';
BEGIN
V_I := STRBEGIN;
V_J := STREND;
EXECUTE IMMEDIATE DPTABLE;
ISQL := 'create global temporary table test(sid int) on commit delete rows';
EXECUTE IMMEDIATE ISQL;
WHILE V_I <= V_J LOOP
INSERT INTO TEST VALUES (V_I);
END LOOP;
OPEN OCUR FOR
SELECT T.SID FROM TEST T;
END;

同時臨時表就是一個緩存數據的表,在執行提交操作的時候就被清空了,沒有必要每次都去新建然後刪掉,他佔用的存儲空間很少。

❻ ORACLE存儲過程創建臨時表並插入數據。

存儲過程創建表後,在編譯階段資料庫中並沒有該表。這時向表中插入數據,會提示表不存在。所以,插入語句要賦值到變數里,通過e來執行。

❼ 如何在存儲過程中實現插入更新數據

--先在資料庫中創建test表,表中有列名為name,類型為varchar(50)
然後先執行
create
procere
proc_insert
@name
varchar(50)
as
begin
insert
into
test
values(@name)--插入數據
end
go
create
procere
proc_update
@newname
varchar(50),@oldname
varchar(50)
as
begin
update
test
set
[email protected]
where
[email protected]更新數據
end
go
--其中proc_insert為存儲過程名,可自定義
procere可使用簡寫proc
上面執行完成後調用存儲過程
exec
proc_insert
'曉華'--將"曉華"添加到test表中
exec
proc_update
'小明','曉華'
--將表中'曉華'
改為'小明',必須與存儲過程變數順序相同
exec
proc_update
@oldname='小明',@newname='曉華'--與存儲過程變數順序可以不同
drop
procere
proc_insert
刪除存儲過程proc_insert

❽ 用oracle存儲過程將一張表的數據查出插入另一張表

1、創建測試表,

create table test_tbl_1(id number, value varchar2(20));

create table test_tbl_2(id number, value varchar2(20));

❾ oracle存儲過程插入一條數據,運行之後,數據不能插入

這種情況屬於插入數據後,沒有提交(commit),導致表被鎖,所以需要進行提交(commit)或者回滾(rollback)操作。

如果當前session已關閉,可通過如下方法殺掉進程。

1、生成Kill Session語句

select'altersystemkillsession'''||SID||','||SERIAL#||''';'from
(
selectdistincta.sid,a.Serial#,status,machine,LOCKWAIT,logon_time
fromv$sessiona,v$locked_objectb
where(a.status='ACTIVE'ora.status='INACTIVE')
anda.sid=b.session_id
andb.ORACLE_USERNAME='XYHISTEST'--加上用戶名是避免把其他系統的會話也關閉,以免傷及無辜

)

2、批量執行第一步生成的語句

altersystemkillsession'sid,serial#';
熱點內容
java資料庫遷移 發布:2022-12-09 01:10:07 瀏覽:788
錢包密鑰存儲 發布:2022-12-09 01:10:01 瀏覽:602
rides緩存怎麼搭 發布:2022-12-09 01:02:30 瀏覽:567
蒙氏編程教具 發布:2022-12-09 01:00:43 瀏覽:127
免費php空間支持ftp 發布:2022-12-09 00:59:50 瀏覽:81
解壓軟體沒有密碼為什麼有密碼了 發布:2022-12-09 00:59:29 瀏覽:737
安卓微信發送到手機上怎麼設置 發布:2022-12-09 00:57:52 瀏覽:732
怎麼將伺服器和域名連接 發布:2022-12-09 00:55:18 瀏覽:121
存入資料庫 發布:2022-12-09 00:52:44 瀏覽:35
php調用dll 發布:2022-12-09 00:49:02 瀏覽:123