2010-08-12 4 views
1

데이터베이스 서버에 저장 프로 시저가 있는지 확인하는 가능한 MySqL 쿼리를 찾고 있는데, 그렇지 않으면 반환합니다. 그렇지 않으면 삽입 할 수 있습니다. 그것은 C#을 사용합니다.mysql 저장 프로 시저, 존재 여부를 확인하는 쿼리

도움이 다음과 같은 쿼리를 수행 할 수 있습니다 MS SQL

Vade

답변

4

:

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

.. 존재하는 경우 결과를 얻어야합니다. 그러나 대부분의 공유 호스팅 mysql 서비스에서 루틴, 트리거 등은 일반적으로 생성 할 수 없다는 점에 유의하십시오. 자체 서버라면 아무런 문제가 없습니다.)

+0

제품이 삽입물 인 경우 여전히 작동합니까? (이유는 삽입 절차 뒤에, last_inserted_id() 및 일부 un unknown 이유는 내 C# 응용 프로그램에서 last_inserted_id() 프로 시저가 나를 위해 그것을 수행 할 결과를 반환하지 않습니다 ODBC 드라이버를 사용하여) – Vade

+0

아, 방아쇠를 의미합니까? 프로 시저가 삽입 이후 또는 삽입 전에 호출되는 경우에도 적용되지만 구문을 전달할 수는 없습니다. 그럼에도 불구하고 트리거/프로 시저가 정의되면 정보 스키마에 포함될 것입니다.이 스키마는 거의 모든 상황에서 사용자가 사용할 수 있습니다 (필자는 항상 쿼리 할 수있었습니다). – dmp

2

를 감사 :이 작업을 수행 할 수 있습니다

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