你放在sql文件中,oracle會認為所有的腳本都是一個腳本塊,除非碰到執行符號 /
創新互聯專業為企業提供大城網站建設、大城做網站、大城網站設計、大城網站制作等企業網站建設、網頁設計與制作、大城企業網站模板建站服務,十余年大城做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。
所以,修改為以下腳本后將可以執行。
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中嗎,創建package是需要創建包頭和包體的,包頭類似于JAVA中的接口,只有函數(JAVA中叫方法)的定義而沒有具體的實現,創建格式如下:
create or replace package user.pkg_aaa is
/*包里面可以定義多個存儲過程(procedure),自定義函數(function),自定義類型(type);*/
--傳入倆個字符類型的參數,返回一個字符類型的值的函數
function fun_bbb(param1 in varchar2,param2 in varchar2) return varchar2;
--定義返回游標類型
type mycursor is ref cursor;
--傳入一個字符類型參數,返回一個number類型的存儲過程
procedure proc_ccc(param1 in varchar2,param2 out number);
end user.pkg_aaa;
以上是包頭的定義,下面為包體(因包體涉及自己的實現方式,故這里簡寫),如下:
create or replace package body user.pkg_aaa is
--這里function就不寫了
procedure proc_ccc(param1 in varchar2,param2 out number) is
--定義變量
begin
--實現步驟
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())
{
// 業務代碼
}
}
本文名稱:oracle如何創建包體,oracle執行包體
文章路徑:http://vcdvsql.cn/article28/heohcp.html
成都網站建設公司_創新互聯,為您提供虛擬主機、外貿網站建設、定制網站、網站設計公司、云服務器、
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯