比如在存储过程中,我有这样一段代码:
select @studentname = studentname, @studentage = studentage from student
其中的两个局部变量,如果前面没有declare过,能不能用的?
还有附带也有一个关于触发器的问题,是不是触发器的局部变量一定declare过
存储过程 不声明局部变量 直接用,行不行
答案:2 悬赏:0 手机版
解决时间 2021-03-06 12:00
- 提问者网友:末路
- 2021-03-06 06:10
最佳答案
- 五星知识达人网友:逐風
- 2021-03-06 06:56
不声明,不能用,局部变量使用前必须declare
全部回答
- 1楼网友:往事埋风中
- 2021-03-06 08:26
函数的副作用是最令人头疼的问题
我们都知道形参使得函数可以改变调用者的变量值
所以很容易产生副作用
所以函数设计时应当避免频繁改变形参的值
这就是你所看到的现象:“不直接用型参参与运算”
这样就不会改变调用者的变量值
当然最后还是要改变形参的值,否则形参就没有意义了
还有另一个原因是编译有关的
局部变量是在栈分配空间的
生成的机器代码是近调用的短地址
而形参就很难说了
可能有的编译器,先按值参处理,最后再用结果修改形参
这样做就不用担心“直接用型参参与运算”的会频繁修改形参了
但是却不符合形参的本义
因此编译器会直接引用形参的地址,就会生成远调用的长地址了
把形参编译成长短不同的地址,这在调用系统功能时就有讲究了
你的代码里有“interrupt”字样,我没猜错的话就是中断调用
这时需要长地址还是短地址,那可是一点也不可弄错了
用局部变量就会得到短地址
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯