@@ procid是什么意思?

时间:2015-08-25 18:28:25

标签: sql-server tsql

问题:我的查询文件有@@procid语句。我想知道这个的用途和含义。我是新手,对不起,如果它很傻。

问题:在this site上的搜索中,我了解到它返回了当前Transact-SQL模块的过程ID,但是这是什么? “Transact-SQL模块”是什么意思?它不应该返回某个除法的余数(here)?我没有得到该页面上显示的示例。

或者我误解了这个?

2 个答案:

答案 0 :(得分:8)

@@ procid是与当前执行的存储过程,触发器或用户定义的函数关联的标识符。它是一个内部编号sql server用于跟踪系统中的这些项目。因此,使用此ID,您可以查找与其关联的对象。所以在下面的例子中:

SET @ProcName = OBJECT_NAME(@@PROCID);

获取过程名称,因为OBJECT_NAME是一个从@@PROCID获取名称的函数。

这个例子有点人为,因为这个问题最终变成了“为什么不对这个名称进行硬编码?”#39; @@ Proc的要点是,如果您不知道正在执行的是什么(可能是动态代码等),您可以通过某种方式确定该时间点正在执行的内容,而无需对该信息进行硬编码到处。

答案 1 :(得分:1)

借用hereModule是存储过程,存储函数,触发器或视图定义的术语。在SQL数据库中创建其中一个对象时,它会在系统表中创建一个条目,包括表sys.sql_modules。这些被赋予OBJECT_ID,您可以使用它来识别它们(以及系统函数@@PROCID被编码以返回)。

你问题中的第二项,MODULO函数,返回除法的余数:例如,三除以三的余数为0,四除以三的余数为1,五除由三个剩余的2。

虽然它们在使用方面是世界分开的,但两者之间存在一个字母的区别:第一个与E' E' (MODUL E ),而第二个以'' O' (MODUL的 0 )。