1
我正在寻找一个可能的MySqL查询,它将检查存储过程是否存在于数据库服务器上,如果它确实很好返回,如果它没有,那么我可以插入它使用c#。mysql存储过程,查询是否存在或不存在
任何帮助表示赞赏
瓦杰
我正在寻找一个可能的MySqL查询,它将检查存储过程是否存在于数据库服务器上,如果它确实很好返回,如果它没有,那么我可以插入它使用c#。mysql存储过程,查询是否存在或不存在
任何帮助表示赞赏
瓦杰
你可以这样做:
SELECT * FROM `information_schema`.`ROUTINES` where specific_name = 'my_procedure_name' and routine_schema = 'my_schema'
..如果存在,应该得到结果。但是,请记住,大多数共享托管mysql服务,例程,触发器等通常不允许创建。如果它是你自己的服务器,没问题;)
在MS SQL您可以执行以下查询:
if exists
(
select name from sysobjects
where name = 'function_name' and type = 'fn'
)
begin
drop function function_name
end
go
如果prodecure是插入的,这仍然会工作吗? (插入过程的原因是,我需要last_inserted_id()和我的c#应用程序中使用odbc驱动程序的一些不知名的原因,它不会返回last_inserted_id()的结果,所以该过程对我来说) – Vade 2010-08-12 11:27:13
啊,你意味着触发器?如果在插入之后或之前调用该过程,这仍然适用,但是我没有掌握语法。无论如何,如果定义了触发器/过程,它将位于信息模式中,在几乎所有情况下(我总是能够查询它)可供用户使用。 – dmp 2010-08-12 18:48:29