T-sql
作者:@kuaiquxie
作者的github:https://github.com/bitebita
本文为作者原创,如需转载,请注明出处:https://www.cnblogs.com/dzwj/p/16316495.html
为解决以上问题,通常使用 DELIMITER 命令将结束命令修改为其他字符。语法格式如下:
DELIMITER $$
创建名称为 GetScoreByStu 的存储过程,输入参数是学生姓名。存储过程的作用是通过输入的学生姓名从学生成绩信息表中查询指定学生的成绩信息,输入的 SQL 语句和执行过程如下所示。
mysql> DELIMITER //
mysql> CREATE PROCEDURE GetScoreByStu
-> (IN name VARCHAR(30))
-> BEGIN
-> SELECT student_score FROM tb_students_score
-> WHERE student_name=name;
-> END //
Query OK, 0 rows affected (0.01 sec)
declare变量的作用域是所在的批处理
IF 1=1
BEGIN
DECLARE @test VARCHAR
SET @test='1'
PRINT 'in if:'+@test
END
PRINT 'out if:'+@test
现在我们知道原来declare变量的作用域是所在的批处理,if阻断不了它的作用域,那上面我们的代码if内外的代码都在一个批处理中,所以@test都是可用的且if里面设置的值还在。
下面我改造一下代码,SQL中是以GO语句来区分批处理的
IF 1=1
BEGIN
DECLARE @test VARCHAR
SET @test='1'
PRINT 'in if:'+@test
END
GO
PRINT 'out if:'+@test
这下对了,检查语法后SQL报错“必须声明标量变量"@test"”
注:GO就是用于一个sql语句的结束
创建局部变量@var,@var2并赋值,然后输出变量的值。
DECLARE @var1 char(10),@var2 char(30)
SET @var1='中国'
SET @var2=@var1+'是一个伟大的国家'
SELECT @var1,@var2
当对某一表进行修改,诸如UPDATE,INSERT, DELETE这些操作时,SQL Server就会自动执行触发器所定义的SQL语句,从而确保对数据的处理必须符合由这些SQL语句所定义的规则。由此触发器可分为:
INSERT触发器:当向表中插入数据时触发,自动执行触发器所定义的SQL语句。
UPDATE触发器:当更新表中某列多列时触发,自动执行触发器所定义的SQL语句。
DELETE触发器:当删除表中记录时触发,自动执行触发器所定义的SQL语句。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix