T-SQL编程

打印输出

直接在编辑区输入下面两种输出方式即可
print'world'

select 'hello world'



变量

声明关键字declare

分类:(1)局部变量 (2)全局变量

(1)局部变量 :以@开头,先声明,再赋值,再使用
declare @str varchar(64) --声明
set @str='I like sql'	--赋值,也可以这样赋值select @str='I like sql'
print @str				--使用
set 和select 赋值的区别:

set适用于赋指定值
select一般用于从表中查询出来的数据赋值给变量,如果查询结果有多条,取最后一条的某个字段的值。
exp:select @a=字段名 from 表名
在赋值过程中,如果是表中查询的数据,如果记录只有一条,使用set和select都可以,但是习惯上使用select

(2)全局变量:以@@开头,由系统定义和维护

常用的全局变量:
--@@ERROR:返回执行的上一个语句的错误号
--@@IDENTITY:返回最后插入的标识值
--@@MAX_CONNECTIONS:返回允许同时进行的最大用户连接数
--@@ROWCOUNT:返回受上一语句影响的行数
--@@SERVERNAME:返回运行 SQL Server 的本地服务器的名称
--@@SERVICENAME:返回 SQL Server 正在其下运行的注册表项的名称
--@@TRANCOUNT:返回当前连接的活动事务数
--@@LOCK_TIMEOUT:返回当前会话的当前锁定超时设置(毫秒)



go语句作用:

--(1)等待go语句之前的代码执行完成之后才能执行后面的代码

比如同时执行创建和使用数据库的代码:
image

解决方法:
image

--(2)批处理结束的一个标志,可以用于设置作用域

没写go默认作用域为上一个go结束
比如变量之间没有写go,则上下都能访问
image

写了就结束了,然后下面变量就不能直接访问,因为在这个作用域里不存在该变量
image



double类型转换varchar



流程控制

1选择分支结构 if else

--exp:某用户银行卡号为“6225547854125656”,该用户执行取钱操作,
--取钱5000元,余额充足则进行取钱操作,并提示"取钱成功",否则提示“余额不足”

代码:

declare @money money
select @money=CardMoney from BankCard where CardNo='6225547854125656'

if(@money<5000)
begin
print '余额不占'
end

else
begin

update BankCard set CardMoney=CardMoney-5000 where CardNo='6225547854125656'
insert into CardExchange values('6225547854125656',0,5000,GETDATE())

end


2选择分支结构 case

--exp:查询银行卡信息,
--分别显示卡号,身份证,姓名,余额,用户等级,银行卡状态
--将银行卡状态1,2,3,4分别转换为汉字“正常,挂失,冻结,注销”
--根据银行卡余额显示银行卡等级 30万以下为“普通用户”,30万及以上为"VIP用户"

代码:

select b.CardNo '卡号' ,a.AccountCode '身份证',a.RealName '姓名',b.CardMoney '余额',

case --判断等级
when CardMoney>500000 then 'vip用户'
else '普通用户'
end '等级',

case CardState --判断状态
when 1 then '正常'
when 2 then '挂失'
when 3 then '冻结'
when 4 then '注销'
else '异常'
end '状态'


3循环结构(while,循环中的break和CONTINUE,作用与C#一致)

1-循环打印1-10

declare @i int=1
while @i<=10
begin
print @i
set @i=@i+1
end

2-循环打印九九乘法表
--制表符 CHAR(9)
--换行符 CHAR(10)
--回车 CHAR(13)

declare @j int =1

while @j<=9
begin

	declare @k int =1

	declare @str varchar(64) =''

	while @k<=@j
	begin


		set @str=@str+CAST(@k as varchar(32))+'*'
		+CAST(@j as varchar(32))
		+'='+CAST(@j*@k as varchar(32))+CHAR(9)

		set @k=@k+1

	end
	
	print @str
	
	set @j=@j+1

end

posted @   青仙  阅读(45)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示