Thứ Bảy, 14 tháng 5, 2011

Thao tác với con trỏ trong sql!

Thực ra cái này mình ghi lại cho dễ nhớ sau này dễ tìm, không gì sau ko lại đi tìm trên mạng lâu lắm khửa khửa cứ ghi lại cho chắc ăn.


Tại đây mình viết thủ tục với đầu vào
CREATE PROCEDURE [dbo].[EMS_CLASSSTUDYPLAN_INSERT]
(
@CLASS_IDS NVARCHAR(100),
@SEMESTER_ID INT,
@FP_ID INT,
@SEMESTERPLAN_ID INT,
@STUDY_SESSION NVARCHAR(500)
)
AS
BEGIN
DECLARE @CHK INT
SET @CHK = 0
SELECT @SEMESTER_ID = SEMESTER_ID FROM SEMESTERPLAN WHERE SEMESTERPLAN_ID = @SEMESTERPLAN_ID
BEGIN TRY
BEGIN TRANSACTION CLASSSTUDYPLAN_INSERT;
DECLARE @CLASS_ID INT /*BIẾN CHẠY ID CỦA CLASS*/
DECLARE DB_CURSOR CURSOR FOR SELECT VALUE FROM EMS_SPLIT(@CLASS_IDS,',') --TẠO CON TRỎ CÁCH NHAU BỞI DẤU ,
OPEN DB_CURSOR --MỞ CON TRỎ
FETCH NEXT FROM DB_CURSOR INTO @CLASS_ID
WHILE @@FETCH_STATUS = 0
BEGIN
IF(@CLASS_ID <> 0)
BEGIN
INSERT INTO CLASSSTUDYPLAN([CLASS_ID],[SEMESTER_ID],[FP_ID],[SEMESTERPLAN_ID],[STUDY_SESSION])
VALUES(@CLASS_ID,@SEMESTER_ID,@FP_ID,@SEMESTERPLAN_ID,@STUDY_SESSION)
END
FETCH NEXT FROM DB_CURSOR INTO @CLASS_ID
END
CLOSE DB_CURSOR --ĐÓNG CON TRỎ
DEALLOCATE DB_CURSOR --GIẢI PHÓNG CON TRỎ
SET @CHK = 1
SELECT @CHK
COMMIT TRANSACTION CLASSSTUDYPLAN_INSERT;
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION CLASSSTUDYPLAN_INSERT;
SET @CHK = 0
SELECT @CHK
END CATCH
END
RETURN


Thực hiện Copy và paste vào csdl là hiện rõ lên các key sẽ dễ nhìn và dễ hiểu hơn. :D

Không có nhận xét nào:

Đăng nhận xét