永发信息网

存储过程 不声明局部变量 直接用,行不行

答案:2  悬赏:0  手机版
解决时间 2021-03-06 12:00
  • 提问者网友:末路
  • 2021-03-06 06:10
比如在存储过程中,我有这样一段代码:
select @studentname = studentname, @studentage = studentage from student
其中的两个局部变量,如果前面没有declare过,能不能用的?

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