程序需要调用数据库的存储过程,
调用前需要检查存储过程是否存在,
存在就直接调用,不存在就创建存储过程,然后在调用
请问用C#代码 怎么检查SQLSERVER数据库中存储过程是否存在?

解决方案 »

  1.   


    if exists( select 1 from sys.all_objects where [type]='p' and [name]='yourprocedurename')
    begin
    exec yourprocedurename 
    end
      

  2.   

    select * from sysobjects where xtype='p' and name='你要检测的存储过程名字'
      

  3.   

    如果你只是需要查询是否存在,应该设计为返回bit(在.net是使用bool)。例如借用修改一下#1楼代码:select cast((if exists( select * from sys.all_objects where [type]='p' and [name]='yourprocedurename') select 1 else select 0) as bit)
      

  4.   

    我用的sql 2008 R2的数据库 
    在运行if exists( select 1 from sys.all_objects where [type]='p' and [name]='yourprocedurename')
    begin
    exec yourprocedurename 
    end
    --和
    select cast((if exists( select * from sys.all_objects where [type]='p' and [name]='yourprocedurename') select 1 else select 0) as bit)分别提示 ')' 附近有语法错误。
    和 关键字 'if' 附近有语法错误。
    ')' 附近有语法错误。
    但我沒看见有错误啊