- 存儲過程
概念:存儲過程(Stored Procedure)是在大型數據庫系統中,一組爲了完成特定功能的SQL 語句集,存儲在數據庫中,經過第一次編譯後再次調用不需要再次編譯,用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行它。存儲過程是數據庫中的一個重要對象。
sql語句:sql中的存儲過程及相關介紹:CREATE PROCEDURE [擁有者.]存儲過程名[;程序編號][(參數#1,…參數#1024)][WITH{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}][FOR REPLICATION]AS 程序行其中存儲過程名不能超過128個字。每個存儲過程中最多設定1024個參數(SQL Server 7.0以上版本),參數的使用方法如下:@參數名數據類型[VARYING] [=內定值] [OUTPUT]每個參數名前要有一個“@”符號,每一個存儲過程的參數僅爲該程序內部使用,參數的類型除了IMAGE外,其他SQL Server所支持的數據類型都可使用。[內定值]相當於我們在建立數據庫時設定一個字段的默認值,這裏是爲這個參數設定默認值。[OUTPUT]是用來指定該參數是既有輸入又有輸出值的,也就是在調用了這個存儲過程時,如果所指定的參數值是我們需要輸入的參數,同時也需要在結果中輸出的,則該項必須爲OUTPUT,而如果只是做輸出參數用,可以用CURSOR,同時在使用該參數時,必須指定VARYING和OUTPUT這兩個語句。實例:create or replace procedure add_sal(dept_id number,temp_num out number) is cursor sal_cursor is select employee_id,salary,hire_date from employees where department_id = dept_id; v_1 number(4,2) := 0; begin temp_num := 0; for c in sal_cursor loop if to_char(c.hire_date,'yyyy') < '1995' then v_1 := 0.05; elsif to_char(c.hire_date,'yyyy') < '1995' then v_1 := 0.03; else v_1 := 0.01; end if; update employees set salary = salary*(1+v_1) where employee_id = c.employee_id; temp_num := temp_num + c.salary*v_1; end loop; dbms_output.put_line(temp_num); end; 調用方法: declare v_temp number(10) := 0; begin add_sal(80,v_temp); end;
- 存儲函數:
概念:有返回值的存儲過程。
實例: helloworld create or replace function hello_world(v_log varchar2) return varchar2 is begin return 'helloworld '||v_log; end; 調用: declare v_hell varchar2 := 'nihao'; begin hello_world(v_hell); end;
實例2:
create or replace function get_sal(dept_id number,total out number) return number is v_sumsal number(10) := 0; cursor salary_cursor is select salary from employees where department_id = dept_id; begin total := 0; for c in salary_cursor loop v_sumsal := v_sumsal + c.salary; total := total + 1; end loop; return v_sumsal; end;
調用: declare v_dept number := 80; v_num number := 0; begin
end;實例3:get_sal(v_dept,v_num);
create or replace function get_sysDate return date is v_date date; begin v_date := sysdate; return v_date; end;
oracle存儲函數和存儲過程
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.