你放在sql文件中,oracle會認為所有的腳本都是一個腳本塊,除非碰到執(zhí)行符號 /

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供大城網(wǎng)站建設、大城做網(wǎng)站、大城網(wǎng)站設計、大城網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、大城企業(yè)網(wǎng)站模板建站服務,十余年大城做網(wǎng)站經驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。
所以,修改為以下腳本后將可以執(zhí)行。
create or replace package pkg_sfdc_registration as
emp_id number(10);
procedure hire_employee(e_id out number);
end pkg_sfdc_registration;
/ --- 這里加個符號 /
create or replace package body pkg_sfdc_registration as
procedure hire_employee(e_id out number) is
begin
select 1 into e_id from dual;
end hire_employee;
end pkg_sfdc_registration;
/ --- 這里加個符號 /
包頭
create or replace package package_name is
prcedure p1;
prcedure p2(v1 in char, v2 in date);
end package_name;
包體
create or replace package body package_name is
prcedure p1 is
begin
--代碼省略
end p1;
prcedure p2(v1 in char, v2 in date) is
begin
--代碼省略
end p2;
end package_name;
這是第一問
create or replace procedure proc_SALARY(v_EMPCODE varchar2) Is
v_workoingdays salary_details.workingdays%type;
v_salary salary_details.salary%type;
begin
select salary into v_salary from salary_details where EMPCODE = v_EMPCODE;
v_salary = v_salary * 0.95;
dbms_output.put_line(v_salary);
exception
when no_data_found then
dbms_output.put_line('未找到相應員工');
end;
begin
proc_SALARY('1');
end;
先create package,在里面聲明procedure
然后再create package body,在package body里面編寫procedure的代碼即可(相當于create procedure)。
包里沒有create procedure
示例如下:
CREATE OR REPLACE PACKAGE pkg_test IS
PROCEDURE pro_test(V_OLD IN VARCHAR2,V_NEW IN VARCHAR2);
...
END test;
/
CREATE OR REPLACE PACKAGE BODY pkg_test IS
...
PROCEDURE pro_test(V_OLD IN VARCHAR2,V_NEW IN VARCHAR2) IS
BEGIN
...
END;
...
END pkg_test;
你這題問的是什么意思,是想把存儲過程定義到package中嗎,創(chuàng)建package是需要創(chuàng)建包頭和包體的,包頭類似于JAVA中的接口,只有函數(shù)(JAVA中叫方法)的定義而沒有具體的實現(xiàn),創(chuàng)建格式如下:
create or replace package user.pkg_aaa is
/*包里面可以定義多個存儲過程(procedure),自定義函數(shù)(function),自定義類型(type);*/
--傳入倆個字符類型的參數(shù),返回一個字符類型的值的函數(shù)
function fun_bbb(param1 in varchar2,param2 in varchar2) return varchar2;
--定義返回游標類型
type mycursor is ref cursor;
--傳入一個字符類型參數(shù),返回一個number類型的存儲過程
procedure proc_ccc(param1 in varchar2,param2 out number);
end user.pkg_aaa;
以上是包頭的定義,下面為包體(因包體涉及自己的實現(xiàn)方式,故這里簡寫),如下:
create or replace package body user.pkg_aaa is
--這里function就不寫了
procedure proc_ccc(param1 in varchar2,param2 out number) is
--定義變量
begin
--實現(xiàn)步驟
end proc_ccc;
end user.pkg_aaa;
希望樓主采納,如有不解,詳問
調用方式如下:
using (var conn = new OracleConnection(oradb))
using (var cmd = conn.CreateCommand())
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "PKG_NAME.INSERT_FUNC";
cmd.BindByName = true;
cmd.Parameters.Add("Return_Value", OracleDbType.Int16,
ParameterDirection.ReturnValue);
cmd.Parameters.Add("i_description", OracleDbType.Varchar2, 1000,
promotionEventSetupDetails.PromotionDescription,
ParameterDirection.Input);
cmd.Parameters.Add("i_theme", OracleDbType.Varchar2, 80,
promotionEventSetupDetails.PromotionTheme,
ParameterDirection.Input);
cmd.Parameters.Add("o_id", OracleDbType.Varchar2,
ParameterDirection.Output);
cmd.Parameters.Add("o_error_msg", OracleDbType.Varchar2,
ParameterDirection.Output);
conn.Open();
using (var dr = cmd.ExecuteReader())
{
// 業(yè)務代碼
}
}
本文名稱:oracle如何創(chuàng)建包體,oracle執(zhí)行包體
文章路徑:http://chinadenli.net/article28/heohcp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供虛擬主機、外貿網(wǎng)站建設、定制網(wǎng)站、網(wǎng)站設計公司、云服務器、
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)