SQL中什么时候要用declare声明变量?

CREATEPROCEDUREPRODUCT@商品号int,@年份int,@毛利intoutputASDECLARE@某商品销售量int,@某商品进价int,@某商品销售... CREATE PROCEDURE PRODUCT @商品号 int,@年份 int,@毛利 intoutput
AS
DECLARE @某商品销售量 int,@某商品进价 int,@某商品销售单价 int
BEGIN
Select @某商品进价=单价 from 商品表 where商品号= @商品号
Select @某商品销售单价=销售单价,@某商品销售量=count(*) from 销售表where
商品号=@商品号 and 销售时间=@年份
IF @某商品进价 is NULL THEN
ROLLBACK;
RETURN;
END IF
IF @某商品销售单价is NULL THEN
ROLLBACK;
RETURN;
END IF
SET @毛利=(@某商品销售单价-@某商品进价)*@某商品销售量
GO
这个存储过程中为什么要声明@某商品销售量 int,@某商品进价 int,@某商品销售单价 int这几个变量,能不能不声明,后面直接写 Select 单价 from 商品表 where商品号 =@商品号
Select销售单价,count(*) from 销售表where
商品号=@商品号 and 销售时间=@年份·····SET @毛利=(销售单价-进价)*销售量
或许我这个问题低级了点儿,新手大家不要见笑,求解惑。我实在不明白中间变量的意思。。。
展开
 我来答
dmcnero90
2014-03-26 · TA获得超过187个赞
知道答主
回答量:121
采纳率:0%
帮助的人:42.5万
展开全部
像这种问题,基本上没有为啥...
浅显点:就是 人家开发SQL Server的时候,为了更加让编译器更加方便的识别用户输入的代码.
就规定,如果是定义变量 那么 必须要使用 DECLARE 关键字.
那编译器就很容易的知道. DECLARE 空格后面的第一个字符串就是变量名了.
追问
什么时候需要用定义变量,我觉得此题不用定义中间变量也可以啊  直接在AS后面写
Select 单价 from 商品表 where商品号 =@商品号 ···· 这样不行吗?我的意思是这个。看到例如编写多语句表值函数的时候后面直接用select··from···where··,并没有定义中间变量。我不明白的是这个。
追答
as 一般是给字段或者中间表结果取别名吧.
select * from (select username as '用户名'(字段别名) from table) as temp(表别名)

我记得SQL里有地方申明变量需要 as 关键字的.

一般存储中间状态或者值得时候,需要申明变量.

declare @input varchar(100) 之类的.

对了,我这个只是 MS SQLSERVER(微软的SQL)是这个样子.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式