Kết Quả Tạo Các Hàm Người Dùng


)

RETURNS <Function_Data_Type> AS

BEGIN

DECLARE <@ResultVar> <Function_Data_Type> SELECT <@ResultVar> =

<@Parameter_Name1,…,@Parameter_NameN> RETURN <@ResultVar>

END

Ví dụ: Thêm điều kiện, nếu chưa đủ dữ liệu đánh giá (kí hiệu là -1) thì điểm chữ là I, nếu chưa nhận được kết quả thi (kí hiệu là -2) thì điểm chữ là X cho hàm Scalar_Convert.

CREATE FUNCTION Scalar_Convert(@diemso float) RETURNS char(1)

AS BEGIN

Có thể bạn quan tâm!

Xem toàn bộ 323 trang tài liệu này.

DECLARE @diemchu char(1)

If @diemso>=8.5 SELECT @diemchu='A' else If @diemso>=7 SELECT @diemchu='B' else If @diemso>=5.5 SELECT @diemchu='C' else If @diemso>=4 SELECT @diemchu='D' else If @diemso>=0 SELECT @diemchu='F' else If @diemso=-1 SELECT @diemchu='I' else SELECT @diemchu='X'


RETURN @diemchu

END

b) Hàm nội tuyến Cú pháp:

ALTER FUNCTION <Inline_Function_Name> (

<@Parameter_Name1> <Datatype1>,

<@Parameter_NameN> <DatatypeN>

)

RETURNS TABLE


AS RETURN (

SELECT 0

)

Ví dụ: Sửa hàm Inline_VD1 tìm kiếm theo mã ưu tiên. ALTER FUNCTION Inline_VD1(@but nvarchar(15)) RETURNS TABLE

AS RETURN (

SELECT Dbo.Thisinh.sobd, Dbo.Thisinh.hoten, Dbo.Thisinh.ngaysinh,

from Dbo.Thisinh

Where Dbo.Thisinh.maut=@but

)

c) Hàm đa lệnh Cú pháp:

ALTER FUNCTION <Table_Function_Name> (

<@Parameter_Name1> <Datatype1>,

<@Parameter_NameN> <DatatypeN>

)

RETURNS <@Table_Variable_Name> TABLE

(

<Column_1> <Data_Type_For_Column1>,

…,

<Column_N> <Data_Type_For_ColumnN>

) AS

BEGIN

Insert into <@Table_Variable_Name>[(<Column_1>,…<Column_N>)]

<Select …From …Where>


… RETURN END

Ví dụ: Thêm trường ngày sinh cho hàm Table_VD1. ALTER FUNCTION Table_VD1(@man nvarchar(20)) RETURNS @ThuKhoaN

TABLE (

sobaodanh nvarchar(10), hoten nvarchar(50),

man nvarchar(20), ns date,

tongdiem float

) AS

BEGIN

declare @diemmax float set @diemmax =

(select Max(dtoan+dly+dhoa) from thisinh where man=@man)


insert into @thukhoan

select sbd, hoten,ngaysinh,man,dtoan+dly+dhoa as tdiem from thisinh

where dtoan+dly+dhoa=@diemmax and man=@man


RETURN

END

3) Xóa hàm người dùng

Tác dụng: Xóa hàm người dùng đã tạo Cú pháp:

DROP FUNCTION <FUNCTION_Name>

Với <Fucntion_Name> là tên hàm người dùng sẽ bị xóa. Ví dụ: Xóa hàm người dùng có tên là Table_VD2 DROP FUNCTION Table_VD2

4.2.3. Thao tác với hàm người dùng

1) Tạo hàm người dùng


- Dùng công cụ MS

+ Tạo hàm vô hướng

Bước 1: Chọn tên cơ sở dữ liệu/Chọn Programmability/Chọn Functions/Chọn Scalar-Valued Functions/Chọn chuột phải/Chọn New Scalar-Valued Functions.

Hình 4 9 Xây dựng hàm vô hướng Bước 2 Viết đoạn mã lệnh xây dựng hàm vô 1

Hình 4.9. Xây dựng hàm vô hướng

Bước 2: Viết đoạn mã lệnh xây dựng hàm vô hướng. Bước 3: Chọn nút để kiểm tra câu lệnh T-SQL.

Bước 4: Chọn nút để thực hiện câu lệnh xây dựng hàm vô hướng.

+ Tạo hàm nội tuyến

Bước 1: Chọn tên cơ sở dữ liệu/Chọn Programmability/Chọn Functions/Chọn Table-Valued Functions/Chọn chuột phải/Chọn New Inline Table-Valued Function.

Hình 4 10 Xây dựng hàm trực tuyến Bước 2 Viết đoạn mã lệnh xây dựng hàm 4

Hình 4.10. Xây dựng hàm trực tuyến


Bước 2: Viết đoạn mã lệnh xây dựng hàm nội tuyến. Bước 3: Chọn nút để kiểm tra câu lệnh T-SQL.

Bước 4: Chọn nút để thực hiện câu lệnh xây dựng hàm nội tuyến.

+ Tạo hàm đa lệnh

Bước 1: Chọn tên cơ sở dữ liệu/Chọn Programmability/Chọn Functions/Chọn Table-Valued Functions/Chọn chuột phải/Chọn New Multi-statement Table-Valued Function.

Hình 4 11 Xây dựng hàm đa lệnh Bước 2 Viết đoạn mã lệnh xây dựng hàm đa 7

Hình 4.11. Xây dựng hàm đa lệnh

Bước 2: Viết đoạn mã lệnh xây dựng hàm đa lệnh. Bước 3: Chọn nút để kiểm tra câu lệnh T-SQL.

Bước 4: Chọn nút để thực hiện câu lệnh xây dựng hàm đa lệnh.

- Dùng câu lệnh T-SQL

Bước 1: Chọn nút New Query , xuất hiện cửa sổ New Query

Bước 2: Viết đoạn mã lệnh xây dựng hàm (vô hướng, trực tuyến, đa lệnh); trước khi viết câu lệnh xây dựng hàm phải khai báo sử dụng cơ sở dữ liệu bằng lệnh USE.

Bước 3: Chọn nút để kiểm tra câu lệnh T-SQL.

Bước 4: Chọn nút để thực hiện câu lệnh tạo thủ tục lưu trữ. Kết quả tạo các hàm người dùng


Hình 4 12 Kết quả tạo các hàm người dùng 2 Lời gọi hàm Cú pháp 13

Hình 4.12. Kết quả tạo các hàm người dùng


2) Lời gọi hàm Cú pháp:

dbo.Table_Function_Name(List_Real_Pamramater) Trong đó:

List_Real_Pamramater là danh sách các tham số thực sự.

a) Hàm vô hướng:

Đối với hàm vô hướng, ta có thể gọi thực hiện chúng tại bất kỳ nơi nào mà một biểu thức vô hướng có kiểu dữ liệu tương đương được chấp nhận trong các câu lệnh T- SQL. Hàm vô hướng có thể được sử dụng như là một biểu thức:

- Trong mệnh đề SELECT, WHERE, HAVING, GROUP BY, ORDER BY.

- Trong mệnh đề SET bên trong một câu lệnh UPDATE.

- Trong mệnh đề VALUES của câu lệnh INSERT.

- Trong kiểm tra ràng buộc dạng CHECK constraint.

- Trong câu lệnh điều khiển.

- Để định nghĩa giá trị mặc định của trường trong bảng bằng từ khóa DEFAULT.

- Cho các trường có dạng trường tính toán trong bảng (Computed columns)

Ví dụ 1: Đưa ra các thông tin gồm: Số báo danh, họ tên, ngày sinh của những thí sinh quê „Nam Định‟.


use QLTS

select sbd, QLMBH.dbo.Scalar_chuanhoa(hoten), ngaysinh from Thisinh

where QLMBH.dbo.Scalar_chuanhoa(quequan)='Nam Dinh' Ví dụ 2: Thêm một bản ghi vào bảng Ngành.

use QLTS

declare @tenn nvarchar(50) declare @man nvarchar(20) declare @ct int

set @man=' MN018 '

set @tenn=' Ngoai ngu ' set @ct=100

print qlmbh.dbo.scalar_chuanhoa(@man) insert into nganh

values(qlmbh.dbo.scalar_chuanhoa(@man),qlmbh.dbo.scalar_chuanhoa(@tenn

),@ct)

Ví dụ 3: Chuẩn hóa tên thí sinh trong bảng thí sinh. Use QLTS

Update Thisinh

set hoten=qlmbh.dbo.scalar_chuanhoa(hoten) Ví dụ 4: Trả về thứ của ngày hiện tại.

use QLTS

declare @thu nvarchar(10)

select @thu=dbo.Scalar_VD1(GETDATE()) print @thu

b) Hàm nội tuyến và hàm đa lệnh

Đối với hàm nội tuyến và hàm đa lệnh, ta có thể coi chúng như là một bảng.

Ví dụ 1: Đưa các thông tin gồm: Số báo danh, họ tên, ngày sinh của những thí sinh có quê quán là „Nam Dinh‟.

use qlts

select * from dbo.Inline_VD1('Nam Dinh')

Ví dụ 2: Đưa ra các thông tin gồm: Số báo danh, họ tên, ngày sinh, tên ngành, tổng điểm 3 môn và điểm cộng của những thí sinh đã dự thi có tổng điểm 3 môn và điểm cộng nhỏ nhất với tên ngành cho trước.

use qlts select *


from dbo.Inline_VD2('Khoa hoc may tinh')

where dbo.Inline_VD2.td= (select max(dbo.Inline_VD2.td) from dbo.Inline_VD2('Khoa hoc may tinh'))

Ví dụ 3: Đưa các thông tin gồm: Số báo danh, họ tên, tổng điểm ba môn của những thí sinh dự thi ngành „MN01‟ có tổng điểm cao nhất ba môn.

use qlts

select * from dbo.table_VD1('MN01')

Ví dụ 4: Đưa các thông tin gồm: Số báo danh, họ tên, tổng điểm ba môn, tên ngành của những thí sinh có tổng điểm cao nhất của mỗi ngành với mã ngành là

„MN01‟.

use qlts

select dbo.table_VD1.sobaodanh, dbo.table_VD1.hoten, dbo.table_VD1.tongdiem,Nganh.tenn

from dbo.table_VD1('MN02') inner join dbo.Nganh on dbo.table_VD1.man= dbo.Nganh.man

Ví dụ 5: Đưa ra các thông tin gồm: Mã mặt hàng, tên mặt hàng, mua bán, đơn giá của mỗi mặt hàng trong 2009. Biết rằng nếu với mỗi mặt hàng mua thì đơn giá tăng lên 10%, còn với mỗi mặt hàng bán thì đơn giá tăng lên 20%.

use qlmbh select *

from dbo.Table_VD2(2009,10,20)

3) Thay đổi hàm

Cách 1: Chọn loại hàm/Chọn tên hàm/Chọn chuột phải/Chọn Modify. Cách 2: Dùng câu lệnh Alter function

4) Xóa hàm

Cách 1: Chọn loại hàm/Chọn tên hàm/Chọn chuột phải/Chọn Delete/Chọn OK. Cách 2: Dùng câu lệnh Drop function

..... Xem trang tiếp theo?
⇦ Trang trước - Trang tiếp theo ⇨

Ngày đăng: 16/07/2022