sql函數創建
『壹』 在sql plus 中創建存儲函數然後然後通過系別查詢學生叫表中學生的人數並調用
在 sql plus 中創建存儲函數需要使用 create or replace function 語句。例如,如果要創建一個名為 get_student_count 的存儲函數,可以使用以下語句:create or replace function get_student_count(p_department_id number)
return number
as
v_student_count number;
begin
select count(*)
into v_student_count
from student
where department_id = p_department_id;
return v_student_count;
end;
/
上面的語句定義了一個名為 get_student_count 的存儲函數,該函數接收一個名為 p_department_id 的參數,並返回一個數值。在函數體中,我們首先執行一條查詢語句,統計 student 表中給定系別的學生人數,並將結果存儲在變數 v_student_count 中。最後,我們返回變數 v_student_count 的值作為函數的返回值。
要調用這個存儲函數,可以在 select 語句中使用函數名作為一列,並傳入所需的參數。例如,如果要查詢系別為 1 的學生人數,可以執行以下語句:
Copy code
select get_student_count(1) from al;
該語句會調用 get_student_count 函數,並將系別為 1 的學生人數作為查詢結果返
繼續
回。
需要注意的是,上面的存儲函數假設 student 表中存在 department_id 欄位,並且該欄位用於存儲學生所屬的系別。如果不存在該欄位,或者該欄位的名稱不同,那麼需要根據實際情況修改存儲函數的定義。
另外,在實際應用中,可能需要根據需要對存儲函數進行更復雜的編寫,例如添加更多的參數,或者進行更復雜的邏輯操作。如果有這樣的需求,那麼可以根據實際情況進行修改,以滿足實際需求。
『貳』 自己編寫sql函數
create function [dbo].[Get_StrArrayStrOfIndex]
(
@str varchar(1024), --要分割的字元串
@split varchar(10), --分隔符號
@index int --取第幾個元素
)
returns varchar(1024)
as
begin
declare @location int
declare @start int
declare @next int
declare @seed int
set @str=ltrim(rtrim(@str))
set @start=1
set @next=1
set @seed=len(@split)
set @location=charindex(@split,@str)
while @location<>0 and @index>@next
begin
set @start=@location+@seed
set @location=charindex(@split,@str,@start)
set @next=@next+1
end
if @location =0 select @location =len(@str)+1
--這兒存在兩種情況:1、字元串不存在分隔符號 2、字元串中存在分隔符號,跳出while循環後,@location為0,那默認為字元串後邊有一個分隔符號。
return substring(@str,@start,@location-@start)
end
使用舉例:
select id,code=dbo.Get_StrArrayStrOfIndex(code,'.',4) from code_table