㈠ 請問plsql中下面這個循環什麼意思啊,謝謝
reverse在這里是倒序循環的意思,也就是說從6開始,步長為-1,循環到1:
sys@ORCL>begin
2 for i in reverse 1..6
3 loop
4 dbms_output.put_line(i);
5 end loop;
6 end;
7 /
6
5
4
3
2
1
另外reverse也是一個函數:
sys@ORCL>select reverse('abcdefg') from al;
REVERSE
-------
gfedcba
㈡ 我想用PLSQL寫一個FOR循環
FOR I IN 1..10 LOOP
IF I<>6 AND I<>8 THEN
INSERT INTO MESSAGE(results) VALUES(I);
END IF;
END LOOP;
COMMIT;
㈢ oracle存儲過程中循環for in是如何使用的
1、首先編寫存儲過程的整體結構,如下圖所示定義變數。
㈣ plsql forupdate怎麼手動在尾行加多條數據
1、採用insert into values 語句插入一條,寫很多條語句即可多條數據,這種主要針對於離散值以及一些基礎信息的錄入,如:insert into test(xh,mc) values('123','測試');
如果插入的數據有規律,可利用for、loop循環插入,主要用於批量生成測試數據
begin
for i in 1 .. 100 loop
insert into test(xh,mc) values(i||'','測試');
end loop;
end ;。
2、採用insert into selct from 語句來一次性插入一個集合,這種主要依據於要插入的數據源已經存儲於資料庫對象中,或者利用al虛表來構造數據,經過加工後寫入一個集合。
insert into test (xh,mx) select '123','測試' from al;
3、採用plsql等工具、或者oracle的imp、impdp命令來導入,這種主要用資料庫與資料庫之間的大批量數據導入,導入的數據格式為plsql的pde、oracle的dmp等。dmp文件可使用
table_exists_action參數控制導入動作:replace替換原表,truncate清除原表數據再導入,append增量導入數據,當然impdp數據泵的導入要依賴於directory路徑。
impdp 用戶名/密碼 mpfile=123.dmp logfile=123.log directory=imp_dir tables=test table_exists_action=append
4、使用excel文件直接拷貝。這種主要用於要寫入的數據已是excel文件或者行列分明的其它格式文件,每一列的值和表結構相對應,可直接打開表的行級鎖,把數據拷貝進入。
打開行級鎖方法:
select t.*,rowid from 表名 t where 1=2;
select * from 表名 where 1=2 for update;
直接把excel數據拷貝到表裡
㈤ plsql中管聯操作符的作用
1、打開PLSQL,填寫用戶名和密碼(初始有兩個用戶sys和system,密碼是自己安裝oracle資料庫時定的),Database選擇ORCL(默認資料庫,oracle中創建的用戶就像是mysql中建的資料庫,兩者有異曲同工之妙)
以上就是在PLSQL中新建用戶,創建表的步驟,謝謝!
㈥ Oracle plsql編程的三道題目
4、使用case語句更新工資,10部門提高100,20部門提高200,30部門提高300,40部門提高400。
setserveroutputon
declarev_dptemp.dpt%type;
begin
selectdptintov_dptfromempwherename='zhangsan'
case
whenv_dpt='10'then
updateempsetsal=sal+100wherename='zhangsan';
whenv_dpt='20'then
updateempsetsal=sal+200wherename='zhangsan';
whenv_dpt='30'then
updateempsetsal=sal+300wherename='zhangsan';
whenv_dpt='40'then
updateempsetsal=sal+400wherename='zhangsan';
else
dbms_output.put_line('無法更新!');
endcase;
end;
5、分別使用3種循環計算10的階乘
簡單(loop)循環
declareinumber(2):=1;snumber(10):=1;
begin
loops:=s*i;
i:=i+1;
dbms_output.put_line(s);
exitwheni>10;
endloop;
end;
for循環
declareinumber(2):=1;snumber(10):=1;
begin
loop
s:=s*i;
i:=i+1;
dbms_output.put_line(s);
exitwheni>10;
endloop;
end;
while循環
declareinumber(2):=1;snumber(10):=1;
begin
whilei<=10loop
s:=s*i;
i:=i+1;
dbms_output.put_line(s);
endloop;
end;
6、使用for循環輸出一個實心三角形,底邊長由用戶輸入。
核心代碼:
begin
foriin1..5loop
dbms_output.put_line(rpad(i,8-i,'')||rpad('*',2*i-1,'*'));
endloop;
end;
㈦ plsql中FOR語句的問題
變數c沒有定義,是想使用游標嗎?
我不太清楚for循環中能否用and
根據你的需求,我寫了如下代碼:
declare
i number;
c TEXT_IMPORT.姓氏%type;
cursor c_text is select 姓氏 from TEXT_IMPORT;
begin
i :=1
open c_text;
for i in 1 .. 504 loop
fetch c_text into c;
update test_hanzibiao t set t.xingshi = c, t.hzbid =i;
i:=i+1;
end loop;
close c_text;
end;
㈧ PLSQL幾種循環語句用法
lsql中的三種循環
[sql]view plain
<codeclass="language-java">--while循環(條件成立時執行)
declare
pnumnumber:=1;
whilepnum<=10loop
dbms_output.put_line(pnum);
pnum:=pnum+1;
endloop;
end;
</code>
- --loop循環(條件成立時退出) declare pnum number:=1; begin loop --退出條件:循環變數大於10 exit when pnum>10; --列印該變數的值 DBMS_OUTPUT.PUT_LINE(pnum); --循環變數+1 pnum:=pnum+1; end loop; end;
- --for循環(1..10表示連續區間)declare punm number:=1;beginfor pnum in 1..10 loopdbms_output.put_line(pnum);end loop;end;
㈨ plsql的for update
使用了plsql的自動替換功能。
請按照如下步驟修改設置:
1. 菜單中找到 Tools--preferences
2. 在左側列表中選擇「Editor」
3. 在右側配置中找到「AutoReplace」這一項
4.點擊 Edit 按鈕,刪除其中的所有文本
5. 點擊OK,結束設置
6. 重啟Plsql,這樣就不會出現上述的自動替換了
㈩ 使用PLSQL語句和游標循環列印出emp表中所有人工資和姓名。急謝謝了
查詢輸出所有員工編號,姓名,工資(PLSQL表類型)
DECLARE
TYPE emp_table_type IS TABLE OF employees%ROWTYPE INDEX BY BINARY_INTEGER;
e emp_table_type;
CURSOR emp_cursor IS
SELECT * FROM employees;
BEGIN
OPEN emp_cursor;
FETCH emp_cursor BULK COLLECT
INTO e;
FOR i IN 1 .. e.count LOOP
dbms_output.put_line('編號' || e(i).employee_id);
dbms_output.put_line('姓名' || e(i).last_name);
dbms_output.put_line('工資' || e(i).salary);
dbms_output.put_line('----------------------------');
END LOOP;
CLOSE emp_cursor;
END;
(5)查詢輸出所有員工編號,姓名,工資(通過limit控制提取的數據量)
DECLARE
TYPE emp_table_type IS TABLE OF employees%ROWTYPE
INDEX BY BINARY_INTEGER;
e emp_table_type;
CURSOR emp_cursor IS
SELECT * FROM employees;
BEGIN
OPEN emp_cursor;
FETCH emp_cursor BULK COLLECT INTO e LIMIT 6 ;
FOR i IN 1..e.count LOOP
dbms_output.put_line('編號' || e(i).employee_id);
dbms_output.put_line('姓名' || e(i).last_name);
dbms_output.put_line('工資' || e(i).salary);
dbms_output.put_line('----------------------------');
END LOOP;
CLOSE emp_cursor;
END;