首先在sqlplus中set serverout on 以打開顯示至于輸出,可以用dbms_output若在sqlplus中還可以用print
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)郊區(qū)免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了數(shù)千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
DBMS_OUTPU.PUT_LINE是PL/SQL語言的輸出語句。如果要想輸出表中所有數(shù)據(jù),要通過游標(biāo)循環(huán)讀逐條讀出和輸出。下面是一個(gè)簡單例子:
BEGIN
FOR rec IN (SELECT * FROM emp) LOOP
dbms_output.put_line(rec.empno||rec.ename);
END LOOP;
END;
我創(chuàng)建的兩個(gè)表
create table Users(
UserName varchar2(8) primary key,
password varchar2(8) not null,
qxno int,
foreign key(qxno) references qx(qxno)
);
create table Student(
StudentName varchar2(8) primary key,
password varchar2(8) not null,
name varchar2(20),
sex varchar2(4),
age int,
qxno int,
foreign key(qxno) references qx(qxno),
constraint chk_age check (age10 and age100)
);
我要實(shí)現(xiàn)的功能是,在向users表中插入數(shù)據(jù)時(shí),如果qxno值為3,就向student中插入數(shù)據(jù)
觸發(fā)器如下
create or replace trigger insert_users_tea
after insert on users
for each row
when(new.qxno=2)
insert into teacher(teachername,password,qxno)
values(:new.username,:new.passWord,:new.qxno)
/
插入數(shù)據(jù)時(shí),提示ORA-04091: 表 ZYUAN.STUDENT 發(fā)生了變化, 觸發(fā)器/函數(shù)不能讀它
ORA-06512: 在 "ZYUAN.INSERT_USERS_STU", line 1
ORA-04088: 觸發(fā)器 'ZYUAN.INSERT_USERS_STU' 執(zhí)行過程中出錯(cuò)
可用DBMS_OUTPUT.PUT_LINE()對存儲(chǔ)過程的進(jìn)行輸出。
編寫存儲(chǔ)過程:
create or replace procedure test_pro(in_num number)
as
M number;
begin
M := in_num;
if 0 M then
dbms_output.put_line('輸出SQL語句1');
elsif M 3 then
dbms_output.put_line('輸出SQL語句2');
else
dbms_output.put_line('nothing');
end if;
end;
擴(kuò)展資料;
存儲(chǔ)在數(shù)據(jù)庫的數(shù)據(jù)字典中,存儲(chǔ)在當(dāng)前的應(yīng)用中安全性由數(shù)據(jù)庫提供安全保證,必須通過授權(quán)才能使用存儲(chǔ)子程序,安全性靠應(yīng)用程序來保證,如果能執(zhí)行應(yīng)用程序,就能執(zhí)行該子程序。模式描述IN參數(shù)用來從調(diào)用環(huán)境中向存儲(chǔ)過程傳遞值,不能給IN參數(shù)賦值,給此參數(shù)傳遞的值可以是常量、有值的變量、表達(dá)式等。
參考資料來源:百度百科-Oracle存儲(chǔ)過程
可以使用wm_concat()函數(shù);
下面是我做的一個(gè)例子,可以參考下,當(dāng)然具體語法可以百度,也可以去官方文檔查:
SCOTT@ ysdb1show user
USER is "SCOTT"
SCOTT@ ysdb1create table test_concat(id number(5),name varchar2(10));
Table created.
SCOTT@ ysdb1insert into test_concat values(1,'a');
1 row created.
SCOTT@ ysdb1insert into test_concat values(1,'b');
1 row created.
SCOTT@ ysdb1insert into test_concat values(1,'c');
1 row created.
SCOTT@ ysdb1insert into test_concat values(2,'q');
1 row created.
SCOTT@ ysdb1insert into test_concat values(2,'w');
1 row created.
SCOTT@ ysdb1insert into test_concat values(2,'e');
1 row created.
SCOTT@ ysdb1insert into test_concat values(2,'f');
1 row created.
SCOTT@ ysdb1select * from test_concat;
ID NAME
---------- ----------
1 a
1 b
1 c
2 q
2 w
2 e
2 f
7 rows selected.
SCOTT@ ysdb1select wm_concat(name) from test_concat;
WM_CONCAT(NAME)
--------------------------------------------------------------------------------
a,b,c,q,w,e,f
SCOTT@ ysdb1select id,wm_concat(name) from test_concat group by id;
ID WM_CONCAT(NAME)
---------- --------------------------------------------------------------------------------
1 a,c,b
2 q,f,e,w