『壹』 編寫存儲過程,在學生表,課程表,插入記錄,插入該同學選修1號課程的記錄,同時,刪除課程表中除1號課程外
-- create table s_student(s_id int not null,---學號
-- s_sysname char(10) ,---系名
-- s_techname char(10),---專業名
-- s_name char(10),----姓名
-- s_age  int,
-- s_sex char(1),
-- s_tel char(13),
-- s_address varchar(100),
-- s_email   char(24),
--  primary key(s_id)
-- )
-- go 
-- create table s_class
-- ( s_cid char(10) not null,
-- s_sid  char(10) not null,
-- s_classname char(10),
-- s_teacher     char(15),
-- s_classhour int,
-- primary key (s_sid,s_cid)
-- )
-- go
-- alter table dbo.s_student add s_class char(10) null
-- go 
---編寫存儲過程,在學生表和課程表中插入記錄,穗銀插入該同學選修1號課程的記錄,同時,刪除課程裱中除一號課程外的
-- 所有記錄,存儲過程的輸入參數為:學號,姓名,性別,年齡,系名,年級
create procere p_studentandclass
@sid  char(10),
@sname char(10),
@ssex char(1),
@sage int,
@ssys char(10),
@sclass char(10)
AS
INSERT INTO dbo.s_student  (s_id ,
s_sysname  ,
s_techname,
s_name ,
s_age ,
s_sex ,
s_tel,
s_address ,
s_email,s_class)
values(@sid,
@ssys,
'',
@sname,
@sage,
@ssex,
'',
'',
'或搜',
@sclass)
declare @i int,@classname char(10),@teacher char(15),@classhour int
select @i = 1 ,@classname = '',@teacher = '',@classhour = 0
while @i <= 10 
BEGIN
IF @i = 1 
 BEGIN 
 SELECT  @classname ='羽毛球',@teacher ='楊先生',@classhour = 10
END
ELSE IF @i = 2
BEGIN 
  SELECT @classname ='乒乓球',@teacher ='楊先生',@classhour = 10
END
ELSE IF @i = 3
BEGIN 
  SELECT @classname ='撞球',@teacher ='劉先生',@classhour = 10
END
ELSE IF @i = 4
BEGIN 
  SELECT @classname ='籃球',@teacher ='戴先生',@classhour = 10
END
ELSE IF @i = 5
BEGIN 
  SELECT @classname ='排球',@teacher ='孫先生',@classhour = 10
END
ELSE IF @i = 6
BEGIN 
  SELECT @classname ='足球',@teacher ='易先生',@classhour = 10
END
ELSE IF @i = 7
BEGIN 
  SELECT @classname ='花球',@teacher ='黃先生',@classhour = 10
END
ELSE IF @i = 8
BEGIN 
  SELECT @classname ='跳環',@teacher ='沈先生',@classhour = 10
END
ELSE IF @i = 9
BEGIN 
  SELECT @classname ='高低桿猜團宴',@teacher ='周先生',@classhour = 10
END
ELSE IF @i =10
BEGIN 
  SELECT @classname ='跳水',@teacher ='曹先生',@classhour = 10
END
INSERT INTO dbo.s_class ( s_cid,
s_sid ,
s_classname  ,
s_teacher    ,
s_classhour)
values
(convert(char(10),@i),
@sid,
@classname,@teacher,
@classhour)
select @i = @i +1
END
delete from dbo.s_class where s_sid = @sid and s_cid <> '1'
select *
 from dbo.s_student a,
         dbo.s_class b
where a.s_id = b.s_sid
go
grant exec on  p_studentandclass to  public
go 
你自己運行下就知道了
『貳』 創建一個觸發器,當修改學生課程成績時,自動將相關信息寫入GradeChange表
1、創建一個帶有輸入參數和輸出的存儲過程p_kh,返回指定教師(作為輸入參數)所授課程的課程號(作為輸出參數)。

『叄』 在存儲過程proc_8_t1進行修改,產生學分為『4』的課程學生選課情況列表,其中包括課程號、課程名、學分。
create procere proc_8_t1
as
begin
select student.sno,student.sname,student.sex,student.deptno,student.age,sc.cno,course.cname,student.birthday from student,sc,course where sc.cno in(select cno from sc where cno in(select cno from course where credit=4))and (student.sno=sc.sno) and( sc.cno=course.cno)
end;
CREATE PROCEDURE proc_8_t3
@sno2 int 
AS
DECLARE @sum tinyint 
SELECT @sum = sum(credit) from course,sc where course.cno=sc.cno and sc.sno=@sno2 group by sc.sno
IF @sum>=9 
PRINT '此配枝學生學分不輪頃足!'培桐敏
ELSE
PRINT '此學生學分已足!'
『肆』 --存儲過程,輸入學號,能輸出學生的所有選課信息
這首好唯句「者培exec in_GetDataByScore 0001」 
改為
「   exec in_GetDataByScore '0001'   」 
或者改為
「襪派   exec in_GetDataByScore  @StuNo='0001'    」
『伍』 t-sql語句:編寫一個存儲過程p-3,修改課程表中課程名稱,帶兩個參數
create proc p1(@原課程碰核名  varchar(20),@新課程名 varchar(20)) as
update 課仔御程表 set 課程名=@新課程名念吵岩 where 課程名=@原課程名
『陸』 sql存儲過程
創建一個存儲過程(insertResult)添加學生成績,要求輸入(學號,課程名,分數)
  如果輸入的學號不存在,則提示「學生基本信息表中不存在此學號,請檢查後重新輸入」
  如果輸入的課程不存在,則提示「還沒有這門課程,老答請檢查後重新輸入」
  如果該學生的專業中沒有輸入的課程,則提示「該學生的專業裡面沒有這門課」
  判斷輸入侍弊慧的成績是否是大於0,如果小於0則提示「你太狠了吧,竟然打負分!」
  判斷該學生的課程成績是否已經存在,如果存在則提示「此學生的這門課程成績已經錄入了,請不要重復錄入」
  最後添加成功則提示「成績添加成功」
CREATE PROCEDURE [dbo].[insertResult]
(
 @nStudentNo int, ------------------------學號
 @vchCourse varchar(32), ----------------課程
 @nAchievement int -------------------------成績
)
AS
SET NOCOUNT ON
--table_student_base_info為學生基本信息表,列student_no為學號,student_specialty為專業課名稱,student_achievement為專業課成績
--table_course為課程表, 列course_name為課程名
DECLARE @nCount int  SET @nCount = 0
DECLARE @nSpecialty  SET @nSpecialty = 0
DECLARE @nCourse  SET @nCourse = 0
DECLARE @nExistAchievement SET @bIsMark = 0
--------------------------------------------------判斷學號是否存在
SELECT
 @nCountNo = COUNT(*)
 FROM
  table_student_base_info
 WHERE
  table_student_base_info.student_no = @nStudentNo
IF @nCount < 1
BEGIN
 PRINT '學生基本信息表中不存在此學號,請檢查後重新輸入' 
 RETURN
END
------------------------------------------------判斷專業課及成績
SELECT
 @nSpecialty = COUNT(*),
 @nExistAchievement = student_achievement
 FROM
  table_student_base_info
 WHERE
  table_student_base_info.student_specialty = @vchCourse
IF @nSpecialty < 1
BEGIN
 PRINT '該學生的專業裡面沒有這門課'
 RETURN
END
IF @nExistAchievement >= 0
BEGIN
 PRINT '此學生的這門課程成績已經錄入了,請不要重復錄入'
 RETURN
END
------------------------------------------------判斷指定課程
SELECT
 @nCourse = course_name
 FROM
  table_course
 WHERE
  course_name = @vchCourse
IF @nCourse < 1
BEGIN
 PRINT '還沒有這門課程,請檢查後重新輸卜粗入'
 RETURN
END
----------------------------------------------成績為負
IF @nAchievement < 0
BEGIN
 PRINT '你太狠了吧,竟然打負分!'
 RETURN
END
----------------------------------------------錄入成績
UPDATE
 table_student_base_info
 SET
  student_achievement = @nAchievement 
 WHERE
  table_student_base_info.student_no = @nStudentNo
PRINT '成績添加成功'
『柒』 創建存儲過程,輸入@學號@課程編號@成績向成績表插入記錄,若存在相同學號與課程號,則修改記錄成績
CREATEPROCEDUREsp_Score
(
手空@snoNVARCHAR(50)
,@cnoNVARCHAR(50)
,@scoreDECIMAL(10,4)
)AS
BEGIN
IFEXISTS(SELECT1FROM[成績表]WHERE[學號欄位]=@snoAND[課程欄位]=@cno)
UPDATE[成績表]
SET[成績欄位]=@score
凳薯則WHERE[學號欄位]=@snoAND[課程欄位]=@cno
棗棚ELSE
INSERTINTO[成績表]([學號欄位],[課程欄位],[成績欄位])
VALUES(@sno,@cno,@score)
END
『捌』 用sql語句 創建一個修改特定學號學生成績的存儲過程
---假定變數xuehao為學號,啟蠢羨kecheng為課程,chengji為成績悄拍,表名稱為mytable。
CREATEPROCEDUREUpdateScore
(
@xuehaovarchar(20),
@kechengvarchar(50),
@chengjivarchar(5)
)
AS
SETNOCOUNTOFF;
UPDATEmytableSETchengji=@chengji
WHERE檔燃(xuehao=@xuehao)AND(kecheng=@kecheng)
GO
『玖』 編寫一個存儲過程實現對表數據的刪除 修改和添加!(sql server資料庫)
1、使用賬戶和密碼,連接到自己的資料庫。

『拾』 創建學生-課程資料庫,編寫存儲過程,完成以下功能:
主要問題是存儲過程主體缺少begin 和 end 語句,使得後面的測試語句也被編譯成了存儲過程的主體,從而造成了遞歸(存儲過程調用自己)。
alter procere 學生信息
@snum varchar(4),
@AvgScore int OUTPUT,
@CourseNum int OUTPUT,
@NotpassNum int OUTPUT
AS
BEGIN
  Select @AvgScore = Avg(Score) From SC Where SC.snum = @snum  
  Select @CourseNum = Count(*) From SC Where SC.snum = @snum  
  Select @NotpassNum = Count(*) From SC Where SC.snum = @snum and score<60  
END
另外,分號是SQL語句的結束符,不明白為什麼有存儲過程名後面會緊跟著一個分號。
