【正文】
+ title PRINT message FETCH NEXT FROM titles_cursor INTO title END CLOSE titles_cursor DEALLOCATE titles_cursor Get the next author. FETCH NEXT FROM authors_cursor INTO au_id, au_fname, au_lname END CLOSE authors_cursor DEALLOCATE authors_cursor END 。 WHILE FETCH_STATUS = 0 BEGIN SELECT message = 39。 + au_lname PRINT message 40 DECLARE titles_cursor CURSOR FOR SELECT FROM titleauthor ta, titles t WHERE = AND = au_id Variable value from the outer cursor OPEN titles_cursor FETCH NEXT FROM titles_cursor INTO title IF FETCH_STATUS 0 PRINT 39。 + au_fname + 39。 SELECT message = 39。 ORDER BY au_id OPEN authors_cursor FETCH NEXT FROM authors_cursor INTO au_id, au_fname, au_lname WHILE FETCH_STATUS = 0 BEGIN PRINT 39。 DECLARE authors_cursor CURSOR FOR SELECT au_id, au_fname, au_lname FROM authors WHERE state = 39。 ?sp_depends ’觸發(fā)器名稱 ’ ?sp_depends ‘表名 ’ 38 附例:用戶登錄驗證 CREATE PROC upUserLogin strLoginName NVARCHAR(20), strLoginPwd NVARCHAR(20), blnReturn BIT OUTPUT AS 定義一個臨時用來保存密碼的變量 DECLARE strPwd NVARCHAR(20) BEGIN 從表中查詢當前用戶的密碼,賦值給 strPwd 變量,下面要對它進行比較 SELECT strPwd=uLoginPwd FROM uUser WHERE uLoginName=strLoginName IF strLoginPwd = strPwd BEGIN SET blnReturn = 1 更新用戶最后登錄時間 UPDATE uUser SET uLastLogin=GETDATE() WHERE uLoginName=strLoginName END ELSE SET blnReturn = 0 END 39 附例:在 sql server教學數(shù)據(jù)庫 pub中查詢 state為 ut的作者所出版的著作 CREATE PROCEDURE pub_test AS BEGIN SET NOCOUNT ON DECLARE au_id varchar(11), au_fname varchar(20), au_lname varchar(40), message varchar(80), title varchar(80) PRINT 39。 37 sp_help、 sp_helptext和 sp_depends具體用途和語法形式 ? sp_help:用于查看觸發(fā)器的一般信息 , 如觸發(fā)器的名稱 、屬性 、 類型和創(chuàng)建時間 。TR39。reminder39。 [例 ] 刪除觸發(fā)器 reminder。 36 觸發(fā)器的刪除 1. 利用 SQL命令刪除觸發(fā)器 語法格式: DROP TRIGGER { trigger } [ ,...n ] 說明: trigger:指要刪除的觸發(fā)器名稱,包含觸發(fā)器所有者名。 如果原來的觸發(fā)器定義是用 WITH ENCRYPTION 或 RECOMPILE 創(chuàng)建的,那么只有在 ALTER TRIGGER中也包含這些選項時,這些選項才有效。 USE XSCJ ALTER TRIGGER reminder ON XS FOR UPDATE AS RAISERROR (“ 執(zhí)行的操作是修改” , 16, 10) GO 2. 通過企業(yè)管理器修改觸發(fā)器 進入企業(yè)管理器,修改觸發(fā)器的步驟與創(chuàng)建的步驟相同,進入界面后在“名稱”對應(yīng)的下拉表中選擇要修改的觸發(fā)器名即可進入觸發(fā)器修改狀態(tài)。若要檢查語法,單擊“檢查語法”命令。執(zhí)行該命令后,進入如圖所示的界面。 第 2步 展開“數(shù)據(jù)庫”文件夾,展開將定義觸發(fā)器的表所屬的數(shù)據(jù)庫,然后單擊“表”文件夾。 32 [例 ]在 XSCJ數(shù)據(jù)庫中創(chuàng)建表、視圖和觸發(fā)器,以說明 INSTEAD OF INSERT觸發(fā)器的使用。 ( 3)具有 timestamp 數(shù)據(jù)類型的基表列。 如果視圖的列為以下幾種情況之一: ( 1)基表中的計算列。違背數(shù)據(jù)的一致性 .39。 */ IF (COLUMNS_UPDATED() amp。, 16, 1) ROLLBACK TRANSACTION END 30 利用 SQL命令創(chuàng)建觸發(fā)器 [例 ]在 XSCJ數(shù)據(jù)庫的 XS_KC表上創(chuàng)建一觸發(fā)器,若對學號列和課程號列修改,則給出提示信息,并取消修改操作。) DROP TRIGGER check_trig GO CREATE TRIGGER check_trig ON XS_KC FOR INSERT AS SELECT * FROM inserted a WHERE NOT IN (SELECT