ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

Oracleѧϰ£¨12£©£º´æ´¢¹ý³Ì£¬º¯ÊýºÍ´¥·¢Æ÷(Ò»)
2015-07-24 10:57:38 À´Ô´: ×÷Õß: ¡¾´ó ÖРС¡¿ ä¯ÀÀ:3´Î
Tags£ºOracle ѧϰ ´æ´¢ ¹ý³Ì º¯Êý ´¥·¢Æ÷

´æ´¢¹ý³ÌºÍ´æ´¢º¯Êý


l´æ´¢ÔÚ Êý¾Ý¿âÖй©ËùÓÐÓû§³ÌÐòµ÷ÓõÄ×Ó³ÌÐò½Ð´æ´¢¹ý³Ì¡¢´æ´¢º¯Êý¡£
×¢Ò⣺´æ´¢¹ý³ÌÓë´æ´¢º¯ÊýÉùÃ÷±äÁ¿Ê±£¬ÓõÄÊÇas ¶ø²»ÊÇdeclare

´æ´¢¹ý³ÌÓë´æ´¢º¯ÊýÇø±ð

´æ´¢¹ý³Ì²»´øÓзµ»ØÖµ£¬´æ´¢º¯ÊýÓзµ»ØÖµ

´æ´¢¹ý³Ì

´´½¨´æ´¢¹ý³Ì

lÓÃCREATE PROCEDUREÃüÁÁ¢´æ´¢¹ý³Ì
lÓï·¨£º

create [or replace] PROCEDURE¹ý³ÌÃû(²ÎÊýÁбí)

AS

PLSQL×Ó³ÌÐòÌ壻



´´½¨´æ´¢¹ý³Ì¼òµ¥Ê¾Àý

/*
µÚÒ»¸ö´æ´¢¹ý³Ì£ºHello World


µ÷Óô洢¹ý³Ì£º
1. exec sayHello();
2. begin
sayHello();
end;
/


*/
create or replace procedure sayHello
as
--±äÁ¿ËµÃ÷
begin


dbms_output.put_line('Hello World');


end;
/

µ÷Óô洢¹ý³Ì


·½·¨Ò»

set serveroutput on

begin

raisesalary(7369);

end;

/



·½·¨¶þ

set serveroutput on

exec raisesalary(7369);




´æ´¢¹ý³Ì£¨Õǹ¤×ÊʵÀý£©

ʵÀýÒ»


Ϊָ¶¨µÄÖ°¹¤ÔÚÔ­¹¤×ʵĻù´¡Éϳ¤10%µÄ¹¤×Ê£¬²¢´òÓ¡Õǹ¤×ÊǰºÍÕǹ¤×ʺóµÄ¹¤×Ê

´úÂ룺 **************************************************************************************************
/*
Ϊָ¶¨µÄÖ°¹¤ÔÚÔ­¹¤×ʵĻù´¡Éϳ¤10%µÄ¹¤×Ê,²¢´òÓ¡Õǹ¤×ÊǰºÍÕǹ¤×ʺóµÄ¹¤×Ê


¿ÉÄÜÓõ½µÄsqlÓï¾ä
update emp set sal = sal * 1.1 where empno = empid;


*/


create or replace procedure raiseSalary(empid in number)
as
pSal emp.sal%type; --±£´æÔ±¹¤µ±Ç°¹¤×Ê
begin
--²éѯ¸ÃÔ±¹¤µÄ¹¤×Ê
select sal into pSal from emp where empno=empid;
--¸ø¸ÃÔ±¹¤Õǹ¤×Ê
update emp set sal = sal * 1.1 where empno = empid;

--´òÓ¡Õǹ¤×ÊǰºóµÄ¹¤×Ê
dbms_output.put_line('Ô±¹¤ºÅ:' || empid || ' Õǹ¤×Êǰ:' || psal || ' Õǹ¤×ʺó' || psal * 1.1);
end;
/

**************************************************************************************************


ʵÀý¶þ

Ϊָ¶¨Ô±¹¤Ôö¼ÓÖ¸¶¨¶î¶ÈµÄ¹¤×Ê(´«µÝ¶à¸ö²ÎÊý)
´úÂ룺 **************************************************************************************************
create or replace procedure raiseSalary2(empid in number, rate in NUMBER)
as
pSal emp.sal%type; --±£´æÔ±¹¤µ±Ç°¹¤×Ê
begin
--²éѯ¸ÃÔ±¹¤µÄ¹¤×Ê
select sal into pSal from emp where empno=empid;
--¸ø¸ÃÔ±¹¤Õǹ¤×Ê
update emp set sal = sal * rate where empno = empid;

--´òÓ¡Õǹ¤×ÊǰºóµÄ¹¤×Ê
dbms_output.put_line('Ô±¹¤ºÅ:' || empid || ' Õǹ¤×Êǰ:' || psal || ' Õǹ¤×ʺó' || psal * rate);
end;
/
**************************************************************************************************



´æ´¢º¯Êý

lº¯Êý£¨Function£©ÎªÒ»ÃüÃûµÄ´æ´¢³ÌÐò£¬¿É´ø²ÎÊý£¬²¢·µ»ØÒ»¼ÆËãÖµ¡£º¯ÊýºÍ¹ý³ÌµÄ½á¹¹ÀàËÆ£¬µ«±ØÐëÓÐÒ»¸öRETURN×Ӿ䣬ÓÃÓÚ·µ»Øº¯ÊýÖµ¡£º¯Êý˵Ã÷ÒªÖ¸¶¨º¯ÊýÃû¡¢½á¹ûÖµµÄÀàÐÍ£¬ÒÔ¼°²ÎÊýÀàÐ͵ȡ£
l½¨Á¢´æ´¢º¯ÊýµÄÓï·¨£º l

CREATE [OR REPLACE] FUNCTIONº¯ÊýÃû(²ÎÊýÁбí)

RETURN º¯ÊýÖµÀàÐÍ

AS

PLSQL×Ó³ÌÐòÌ壻




´æ´¢º¯ÊýʾÀý

ʾÀý£º²éѯijְ¹¤µÄÄêÊÕÈë¡£

´úÂ룺
****************************************************************************
/*
²éѯijְ¹¤µÄ×ÜÊÕÈë¡£
*/


create or replace function queryEmpSalary(empid in number)
RETURN NUMBER
as
pSal number; --¶¨Òå±äÁ¿±£´æÔ±¹¤µÄ¹¤×Ê
pComm number; --¶¨Òå±äÁ¿±£´æÔ±¹¤µÄ½±½ð
begin
select sal,comm into pSal, pcomm from emp where empno = empid;
return psal*12+ nvl(pcomm,0);
end;
/


****************************************************************************



´æ´¢º¯ÊýµÄµ÷ÓÃ

µ÷ÓÃÒ»

declare

v_salnumber;

begin

v_sal:=queryEmpSalary(7934);

dbms_output.put_line('salary is:' ||v_sal);

end;

/


µ÷Óöþ

begin

dbms_output.put_line('salaryis:' ||queryEmpSalary(7934));

end;




¹ý³ÌºÍº¯ÊýÖеÄinºÍout


lÒ»°ãÀ´½²£¬¹ý³ÌºÍº¯ÊýµÄÇø±ðÔÚÓÚº¯Êý¿ÉÒÔÓÐÒ»¸ö·µ»ØÖµ£»¶ø¹ý³ÌûÓзµ»ØÖµ¡£
lµ«¹ý³ÌºÍº¯Êý¶¼¿ÉÒÔͨ¹ýoutÖ¸¶¨Ò»¸ö»ò¶à¸öÊä³ö²ÎÊý¡£ÎÒÃÇ¿ÉÒÔÀûÓÃout²ÎÊý£¬ÔÚ¹ý³ÌºÍº¯ÊýÖÐʵÏÖ·µ»Ø¶à¸öÖµ¡£



´øoutº¯ÊýµÄ´æ´¢¹ý³ÌʾÀý


/*
out²ÎÊý£º²éѯij¸öÔ±¹¤µÄÐÕÃû£¬ÔÂнºÍְλ
*/
create or replace procedure queryEmpInfo(eno in number,
pename out varchar2,
psal out number,
pjob out varchar2)
as
begin
select ename,sal,empjob into pename,psal,pjob from emp where empno=eno;


end;
/


ÔÚout²ÎÊýÖÐʹÓÃÓαê

lÊ×ÏÈÉêÃ÷°ü½á¹¹ \


lÈ»ºó´´½¨°üÌå \

ÔÚJavaÓïÑÔÖзÃÎÊÓαêÀàÐ͵Äout²ÎÊý

\


´úÂëʵÏÖ£º
package demo.test;

Ê×Ò³ ÉÏÒ»Ò³ 1 2 ÏÂÒ»Ò³ βҳ 1/2/2
¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
·ÖÏíµ½: 
ÉÏһƪ£ºoracledblinkÔì³ÉÔ¶³ÌÊý¾Ý¿âsessi.. ÏÂһƪ£ºORA-02049:³¬Ê±:·Ö²¼Ê½ÊÂÎñ´¦ÀíµÈ..

ÆÀÂÛ

ÕÊ¡¡¡¡ºÅ: ÃÜÂë: (ÐÂÓû§×¢²á)
Ñé Ö¤ Âë:
±í¡¡¡¡Çé:
ÄÚ¡¡¡¡ÈÝ:

¡¤Linuxϵͳ¼ò½é (2025-12-25 21:55:25)
¡¤Linux°²×°MySQL¹ý³Ì (2025-12-25 21:55:22)
¡¤Linuxϵͳ°²×°½Ì³Ì£¨ (2025-12-25 21:55:20)
¡¤HTTP Åc HTTPS µÄ²î„ (2025-12-25 21:19:45)
¡¤ÍøÕ¾°²È«±ØÐ޿ΣºÍ¼ (2025-12-25 21:19:42)