http://blog.csdn.net/u014180504/article/details/50589645
http://blog.csdn.net/u014180504/article/details/50592815
之前写了这两个博客,但是有些博友对于object_id不理解,这里就给大家说明一下:
object_id()是一个函数,获取相应过程的object_id
我们use 数据库名称
--查询所有存储过程
select * from sys.objects where type = 'P';
我们可以看到有object_id列,这是因为在sysobjects系统表中存储着数据库的所有对象,每个对象都有一个唯一的id号进行标识.
object_id就是根据对象名称返回该对象的id.
select object_id(对象名)等同于select id from sysobjects where name=对象名
注: 如果参数是一个临时表名,则必须指定所属数据库.你举出的OBJECT_ID('Tempdb..##flowcount') 就属于这种情况.说明这个临时表是数据库Tempdb的.
其实就是先去查找一下我们要要创建的存储过程名对应的ID,如果有ID存在说明我们要创建的存储过程名已经存在了,所以就把它删除重建,这样大家理解了吧,
创建存储过程之前都要先判断同名存储过程是否已经存在,如果已经存在就要删除或者做处理,要不然会报错。