declare 是什么意思

DECLARE 在 SQL 中用于声明变量。
MySQL 语法:DECLARE 数据类型variable_name [DEFAULT value]; 示例:DECLARE myVariable INT DEFAULT 1 0; 目的:在过程/函数中存储临时数据以提高效率。
场景:存储中间结果、循环变量和临时数据。
不要这样做:声明太多不必要的变量并增加维护成本。

sql中declare的用法

让我告诉你关于 DECLARE 的事情。
刚进入这个行业的时候我真的被骗了。

我记得有一个冬天,我正在北京一家外包公司做一个项目。
客户端数据库是SQL Server。
我编写了一个存储过程,想使用一个变量来存储日期。
然而我忘记加@符号了,直接写了DECLARE date DATETIME....运行后一切崩溃。
我花了两个小时调试才找到它。
所以你看,@符号必须加上,这是一条硬性规定。

还有一次,我在上海报道。
需要计算特定月份的销售额。
我写了一个变量 @total_sales DECIMAL(1 2 ,2 )... 然后我想使用 SET @total_sales = (SELECT SUM(samount) FROM order WHERE date='2 02 3 -01 -01 ')。
结果客户端的数据量非常大,有几万条。
这个计算直接占用了CPU,报表页面卡了很长时间。
后来我把它改成临时表,先汇总数据,然后计算一下,问题就解决了。
所以你看,如果直接用变量来存储大结果,有时候服务器会挂掉。

另外,我在杭州的时候,有位老人写了一个存储过程,用变量来组合SQL语句,比如DECLARE @sql NVARCHAR(2 00); SET @sql = 'SELECT FROM' + QUOTENAME(@table_name) + ' WHERE active=1 '; EXEC sp_executesql @sql;结果被老板骂了,说有SQL注入的风险。
后来改用参数化查询就好了。
所以我不敢乱说,不然会惹出大麻烦。

哦,顺便说一下,还有一个陷阱。
我在成都的时候,有一个使用MySQL的项目。
我写了一个DECLARE @name VARCHAR(5 0);...原来在MySQL中,DECLARE不能直接赋值,必须使用SET @name = '张三';。
在SQL Server中可以使用DECLARE来赋值,例如DECLARE @age INT := 2 5 ;。
所以你看,这个数据库系统和数据库系统还是有区别的。

总之,DECLARE使用起来很方便,但是使用时要注意这些陷阱。