連續寫了兩篇文章,實在寫的頭疼,所以此刻出去溜個彎,就著春風的愜意,舒緩一下大腦,來寫下面的內容,於是我提筆就開始,生怕錯過了下面的時間而耽誤了我回去的事情,畢竟嘛,春節到了,該回家了(15個例子)。
1.create or replace function fun_prac(id number)(函式的使用)
return varchar2
isbegin
dbms_output.put_line('這是第乙個函式');
return 'id的值是:'||id;
end;
2.--定義乙個函式,獲取給定部門的工資總和,要求:部門號定義為引數,工資總額定義為返回值
create or replace function sum_emp_sal(dno number)(函式的使用)
return number
isv_sal emp.sal%type;
begin
select sum(sal) into v_sal from emp where deptno=dno;
return v_sal;
end;
3.----刪除資料之後然後備份資料到另外乙個表中
create or replace trigger backup_data(觸發器的使用)
after delete on emp
for each row
begin
insert into emptest values(:old.empno,:old.ename,:old.job,:old.mgr,:old.hiredate,:old.sal,:old.comm,:old.deptno) ;
end;
4.查詢某個部門的員工工資總和
create or replace function ls_sum_emp_sal(dno number,sum_empno_account out number)(函式的使用)
return number
issum_sal number(10):=0;
cursor emp_cursor is select sal from emp where deptno=dno;--定義游標查詢每個部門下每個員工的工資
begin
sum_empno_account:=0;
for v_sal in emp_cursor loop
sum_sal:=sum_sal+v_sal.sal;
sum_empno_account:=sum_empno_account+1;
end loop;
return sum_sal;
end;
5.求1到100的和用for in loop 迴圈(函式的使用)
create or replace function sum_count
return number
is ---定義變數
v_sum number(10):=0;
begin
for v_temp in 1..100 loop
v_sum:=v_sum+v_temp;
end loop;
return v_sum;
end;
6. loop exit when 求1到100的和(函式的使用)
create or replace function sum_count1
return number
isv_sum number(10):=0;
v_a number(10);
begin
v_a:=1;
loop
v_sum:=v_sum+v_a;
v_a:=v_a+1;
exit when v_a>100;
end loop;
return v_sum;
end;
7.while loop 求1到100的和(函式的使用)
create or replace function sum_count2
return number
isv_sum number(10):=0;
v_a number(10);
begin
v_a:=0;
while v_a<=100 loop
v_sum:=v_sum+v_a;
v_a:=v_a+1;
end loop;
return v_sum;
end;
8.動態更新sql(儲存過程的使用)
create or replace procedure proc_update1(sno number,sname varchar2) as
mysql varchar2(500);
begin
mysql:='update student set sname=:1 where sno=:2';
execute immediate mysql using sname,sno;
end proc_update1;
9.往學生表中插入1000條資料(儲存過程的使用)
create or replace procedure proc_while_insert(v_typ varchar2) is
cnt number;
begin
for r in 1 ..1000 loop
insert into student (sno,sname)
select 'st'||r ,'測試'||r from dual;
end loop;
exception
when no_data_found
then
dbms_output.put_line('資料不存在');
end;
10.儲存過程游標的使用
create or replace procedure pro_add_sal(dno number,total_sal out number) is(儲存過程的使用)
---乙個部門下有多個員工,所以需要定義游標
cursor emp_cursor is select sal,hiredate from emp where deptno=dno;
v_temp number(5,2);
begin
---使用for in 迴圈
total_sal:=0;
for v_result in emp_cursor loop
if to_char(v_result.hiredate,'yyyy')<'1995' then v_temp:=0.05;
elsif to_char(v_result.hiredate,'yyyy')<1998 then v_temp:=0.03;
else v_temp:=0.01;
end if;
total_sal:=total_sal+v_result.sal*v_temp;
update emp set sal=sal*(1+v_temp) where deptno=dno;
end loop;
end;
11.儲存過程的更新和查詢語句
create or replace procedure update_emp(v_empno number,v_result out number) is(存出過程的使用)
begin
update emp set sal=100 where empno=v_empno;
select sal into v_result from emp where empno=v_empno;
end update_emp;
12.插入emp表資料時觸發(觸發器的使用)
create or replace trigger insert_prac
after insert on emp
for each row
begin
insert into emptest(empno,ename,job) values(:new.empno,:new.ename,:new.job);
end;
13.更新emp表的時候觸發(觸發器的使用)
create or replace trigger update_prac
after update on emp
for each row
begin
update emptest set empno=:new.empno;
end;
14.create or replace procedure proc_selectall(cno in number,s_result out sys_refcursor) is(儲存過程使用)
cnt number;
begin
select sno into cnt from student where sno=cno;
if cnt>0 then
open s_result for
select * from student where sno=cno;
else
open s_result for
select * from student;
end if;
exception
when no_data_found
then
dbms_output.put_line('資料不存在');
end proc_selectall;
15.儲存過程的刪除語句
create or replace procedure proc_delete(cno in number) is(儲存過程使用)
begin
delete from student where sno=cno;
end proc_delete;
簡單的oracle儲存過程
1 oracle儲存過程以及 asp.net 中呼叫儲存過程,實現乙個簡單的登入功能,只是作為學習的,所以處理可能不太合理。在pl sql developer 中編寫儲存過程 新建procedures 乙個簡單的登入檢查儲存過程 如下 create or replace procedure user...
oracle函式和儲存過程簡單例項
1.函式 1 建立函式 create or replace function get tax x number return number as begin declare y number begin y x 2000 if x 0 then return 0 end if return y 5 ...
mysql過程函式 mysql 儲存過程和函式
乙個儲存程式是可以被儲存在伺服器中的一套sql語句。可以通過客戶端用create procedure和create function 建立乙個儲存過程或函式。在客戶端通過call語句 呼叫所建立的存數過程或函式。語法 建立儲存子程式 create procedure sp name proc par...