【问题标题】:mysql Stored Procedure, Query to check if exists or notmysql存储过程,查询是否存在
【发布时间】:2011-03-28 20:38:41
【问题描述】:

我正在寻找一个可能的 MySqL 查询,它将检查数据库服务器上是否存在存储过程,如果返回很好,如果没有,那么我可以使用 c# 插入它。

感谢任何帮助

维德

【问题讨论】:

    标签: c# mysql stored-procedures


    【解决方案1】:

    你可以这样做:

    SELECT * FROM `information_schema`.`ROUTINES` where specific_name = 'my_procedure_name' and routine_schema = 'my_schema'
    

    ..如果它存在,应该得到一个结果。但是,请记住,在大多数共享托管 mysql 服务上,通常不允许创建例程、触发器等。如果是你自己的服务器,没问题;)

    【讨论】:

    • 如果产品是插入产品,这仍然有效吗? (插入过程背后的原因是,我需要 last_inserted_id() 并且由于某些未知原因在我的 c# 应用程序中使用 odbc 驱动程序,它不会返回 last_inserted_id() 的结果,所以该过程为我完成)
    • 啊,你是说触发器吗?如果在插入之后或之前调用该过程,这仍然适用,但我手头没有语法。无论如何,如果定义了触发器/过程,它将位于信息模式中,几乎在所有情况下都可供用户使用(我当然总是能够查询它)。
    【解决方案2】:

    MS SQL 上,您可以执行以下查询:

    if exists
    (
        select name from sysobjects
        where name = 'function_name' and type = 'fn'
    )
    begin
        drop function function_name
    end
    go
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      • 2013-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-04
      • 2010-11-12
      相关资源
      最近更新 更多