过程化SQL和C语言中的变量定义有什么区别吗?

如题所述

变量定义:用于为变量分配存储空间,还可为变量指定初始值。程序中,变量有且仅有一个定义。
变量声明:用于向程序表明变量的类型和名字。
区别:
定义也是声明,extern声明不是定义。定义分配存储空间,而声明不会。通过使用extern关键字声明变量名而不定义它。 事实上它只是说明变量定义在程序的其他地方。程序中变量可以声明多次,但只能定义一次。
只有当声明也是定义时,声明才可以有初始化式,因为只有定义才分配存储空间。
例如:extern int a其中变量a是在别的文件中定义的。前者是"定义性声明(defining declaration)"或者称为"定义(definition)",而后者是"引用性声明(referncing declaration)"。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-12
既然你学过C,应该理解解释执行,和编译执行的差别。
对于数据库来说,procedure就是编译执行。而一般的sql就是解释执行。 你在C中写的sql语句,送到数据库时只是sql字符串。数据库必须要预编译一下。而调用procedure,会调用数据库中已经编译完成的sql,速度当然不同。
你运行一两遍可能看不出差距。如果同一个sql组要运行数千次或者更多,速度差就非常明显了。