當前位置:首頁 » 存儲配置 » oracle存儲過程造數據

oracle存儲過程造數據

發布時間: 2022-08-30 19:06:42

① 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;
endloop;

endinsert_data_4_pressure_3;

② Oracle資料庫的存儲過程怎麼寫

1 CREATE OR REPLACE PROCEDURE 存儲過程名
2 IS
3 BEGIN
4 NULL;
5 END;

行1:
CREATE OR REPLACE PROCEDURE 是一個SQL語句通知Oracle資料庫去創建一個叫做skeleton存儲過程, 如果存在就覆蓋它;
行2:
IS關鍵詞表明後面將跟隨一個PL/SQL體。
行3:
BEGIN關鍵詞表明PL/SQL體的開始。
行4:
NULL PL/SQL語句表明什麼事都不做,這句不能刪去,因為PL/SQL體中至少需要有一句;
行5:
END關鍵詞表明PL/SQL體的結束.
存儲過程創建語法:
create or replace procere 存儲過程名(param1 in type,param2 out type)
as
變數1 類型(值范圍); --vs_msgVARCHAR2(4000);
變數2 類型(值范圍);
Begin
Select count(*) into 變數1 from 表A where列名=param1;

If (判斷條件) then
Select 列名 into 變數2 from 表A where列名=param1;
Dbms_output。Put_line(『列印信息』);
Elsif (判斷條件) then
Dbms_output。Put_line(『列印信息』);
Else
Raise 異常名(NO_DATA_FOUND);
End if;
Exception
When others then
Rollback;
End;

③ 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;

④ oracle編寫存儲過程把表1中多條數據插入到表2,求高手指教(錯誤指向插入sql語句的v_name)

1、上面定義的變數是CUS下面寫的CUR

2、FOR語句的循環變數是游標,需要從游標中提取相應欄位


CURSORCURIS
SELECTNAMEFROMSTU;
BEGIN
FORCINCURLOOP
INSERTINTOSTU_TWO(NAME)VALUES(C.NAME);
COMMIT;
ENDLOOP;
END;

⑤ oracle能否用一個存儲過程,做到先創表a,再向a插數據,再通過a生成表b涉及到非同步問題,實際

1、存儲過程中的內容都是順序執行的,不會存在你說的a還沒有創號,就執行其他sql的情況,你是結合你的實際業務來描述可能出現的情況吧
2、你需求的存儲過程如下
create or replace procere prc_test
as
begin
-- 創建表
execute immediate 'create table a (col1)';
-- 向表中插入數據
execute immedaite 'insert into a values(:1)' using 1;

-- 通過a表創建b表
execute immediate 'create table b as select * from a';
end;

⑥ Oracle存儲過程,更新大量數據,如何循環分批次提交

可通過以下方法:

以100條數據為例,如果海量數據可參考。

如test表中有如下數據:

declare
iint;--定義變數
v_countint;--定義變數
v_loopint;--定義變數
begin
selectcount(*)intov_countfromtest;--計算表內數據總數
selectceil(v_count/10)intov_loopfromal;--計算需要循環次數
i:=1;--為i賦值
whilei<=v_looploop--循環退出條件
updatetestsetbegintime=<=10;--執行更新
commit;--提交
i:=i+1;--i依次加1
endloop;--結束循環
end;

⑦ Oracle 的存儲過程怎麼寫。

oracle 存儲過程的基本語法

1.基本結構
CREATE OR REPLACE PROCEDURE 存儲過程名字
(
參數1 IN NUMBER,
參數2 IN NUMBER
) IS
變數1 INTEGER :=0;
變數2 DATE;
BEGIN

END 存儲過程名字

2.SELECT INTO STATEMENT
將select查詢的結果存入到變數中,可以同時將多個列存儲多個變數中,必須有一條
記錄,否則拋出異常(如果沒有記錄拋出NO_DATA_FOUND)
例子:
BEGIN
SELECT col1,col2 into 變數1,變數2 FROM typestruct where xxx;
EXCEPTION
WHEN NO_DATA_FOUND THEN
xxxx;
END;
...

3.IF 判斷
IF V_TEST=1 THEN
BEGIN
do something
END;
END IF;

4.while 循環
WHILE V_TEST=1 LOOP
BEGIN
XXXX
END;
END LOOP;

5.變數賦值
V_TEST := 123;

6.用for in 使用cursor
...
IS
CURSOR cur IS SELECT * FROM xxx;
BEGIN
FOR cur_result in cur LOOP
BEGIN
V_SUM :=cur_result.列名1+cur_result.列名2
END;
END LOOP;
END;

7.帶參數的cursor
CURSOR C_USER(C_ID NUMBER) IS SELECT NAME FROM USER WHERE TYPEID=C_ID;
OPEN C_USER(變數值);
LOOP
FETCH C_USER INTO V_NAME;
EXIT FETCH C_USER%NOTFOUND;
do something
END LOOP;
CLOSE C_USER;

8.用pl/sql developer debug
連接資料庫後建立一個Test WINDOW
在窗口輸入調用SP的代碼,F9開始debug,CTRL+N單步調試

⑧ Oracle希望能有人提供一個簡單的存儲過程造數據腳本

declare
i number;
begin
for i in 1..1000000
loop
insert into a values(i,'xxx');
end loop;
commit;
end;
/

⑨ oracle資料庫存儲過程實例

創建存儲過程的語句如下:
CREATE[OR REPLACE] PROCEDURE<過程名>
<參數1>,「方式l]<數據類型1>,
<參數2>,[ 方式2]<數據類型2>,
……)
IS|AS (is或as完全等價)
BEGIN
PL/SQL過程體
END<過程名>

例如,下面是一個刪除表的存儲過程:

--參數:tableName 要刪除的表名
create or replace procere del_table(tableName varchar2) as
--定義變數
sql_del_table long;
begin
--構造sql語句
sql_del_table := 'drop table ' || tableName;
--執行
EXECUTE IMMEDIATE sql_del_table;

end del_table;

熱點內容
存儲卡和sd卡一樣嗎 發布:2024-12-26 23:50:43 瀏覽:445
多空線源碼 發布:2024-12-26 23:48:45 瀏覽:322
steam有哪些免費且配置低的游戲 發布:2024-12-26 23:45:36 瀏覽:337
怎麼配一台伺服器的游戲電腦 發布:2024-12-26 23:45:35 瀏覽:6
無丁之地下載ftp 發布:2024-12-26 23:36:32 瀏覽:292
em聚類演算法 發布:2024-12-26 23:22:28 瀏覽:669
php字元串去重 發布:2024-12-26 23:22:26 瀏覽:408
vb遞歸演算法 發布:2024-12-26 23:20:52 瀏覽:768
c語言讀取文件的函數 發布:2024-12-26 23:20:40 瀏覽:302
存儲介質安全 發布:2024-12-26 23:17:42 瀏覽:746