SQL 编程
用SQL編寫程序首先我們要了解SQL的一些編程方法
1.使用變量
變量:是可以存儲數據值的對象,可以使用局部變量向SQL語句專遞數據.
(1)局部變量
T-SQL中,局部變量的名稱必須以標記@作為前綴.
聲明局部變量的語法如下:
語法
declare @variable_name DateType
其中,variable_name 為局部變量的名稱,DateType為數據類型.
例如:
Declare @name varchar(8)
Declare @number int
局部變量的賦值有兩種方法:使用SET語句和SELECT語句
語法
set @variable_name = value
或者
select @variable_name = value
/*--查找張三的信息--*/ declare @name varchar(8) set @name = '張三' select StudentNo, StudentName, BornDate,Address from Student where Studentname = @name/*--查找與張三學號相鄰的學生信息--*/ declare @StudentNo int --使用 select 賦值 selece @StudentNo = StudentNo from Student where StudentName = @name select StudentNo, StudentName, BornDate,Address from Student where (StudentNo = @StudentNo+1) or (StudentNo = @StudentNo-1) GO在T-SQL語言中,為局部變量賦值的語句有SET語句和SELECT語句
下表是set語句和select語句的區別
| ? | set | select |
| 同時對多個變量賦值 | 不支持 | 支持 |
| 表達式返回多個時 | 出錯 | 將返回的最后一個值賦給變量 |
| 表達式未返回值時 | 變量被賦值為null | 變量保持原值 |
?全局變量
SQL Server 中的所有全局變量都使用兩個@符號作為前綴
最重要的五個全局變量
| 變量 | 含義 |
| @@error | 最后一個T-SQL錯誤的錯誤號 |
| @@identity | 最后一次插入的標識值 |
| @@powcount | 受上一個SQL語句影響的行數 |
| @@servername | 本地服務器名稱 |
| @@version | SQL Server 版本信息 |
輸出語句
語法
print 局部變量或字符串
select 局部變量as自定義列名
print '服務器名稱:' + @@servername print 'SQL Server的版本' +@@version select @@servername as '服務器名稱' server @@version as 'SQL Server的版本'局部變量
01.語法
Declare?@age?int
--賦值
Set?@age=20
?
邏輯控制語句
(1)begin-end語句
語法
begin
語句或語句塊
end
作用類似于C#中的 ‘{}‘
(2)if-else語句
語法
if(條件)
語句或語句塊1
else
語句或語句塊2
declare @avg int select @avg= AVG(studentresult) from Result,Subject where Result.SubjectId=Subject.SubjectId and ExamDate>='2013-08-09' and ExamDate<'2013-08-10' and Subject.SubjectName='oop'--02.判定:>=70 顯示優秀,同時顯示分數最高的三個人的分數if(@avg>=70)beginprint '優秀'--顯示前名成績 當天 oopselect top 3 * from Result,Subjectwhere result.SubjectId=Subject.SubjectIdand ExamDate>='2013-08-09'and ExamDate <'2013-08-10'and SubjectName='oop'--降序排列descorder by StudentResult descendelsebeginprint '較差'--顯示前名成績 當天 oopselect top 3 * from Result,Subjectwhere result.SubjectId=Subject.SubjectIdand ExamDate>='2013-08-09'and ExamDate <'2013-08-10'and SubjectName='oop'--降序排列descorder by StudentResult ascend(3)while循環語句
語法
while(條件)
begin
語句或語句塊
[brwak | continue]
end
(4)case多分支語句
?case
when 條件1 then 結果 1
when 條件2 then 結果2
[else 其他結果]
end
declare @date datetime select @date = max(Examdate) from result inner join Subjiect on result.SubjectNo=Subjiect.SubjiectNo where SubjectName='java logic'select 學號=StudentNO, 成績=casewhen StudentResult >90 then 'A'when StudentResult >80 then 'B'when StudentResult >80 then 'C'when StudentResult >80 then 'D'else 'A' endfrom resultinner join Subjiect on result.SubjectNo=Subjiect.SubjiectNowhere SubjectName='java logic'?
轉載于:https://www.cnblogs.com/baixingqiang/p/5236155.html
總結
- 上一篇: 【组织】请13级1/2/3班,14级1/
- 下一篇: 7、redis之使用spring集成co