簡體   English   中英

如何有效地檢查存儲過程在PHP中是否存在

[英]How to efficiently check stored procedure for existence in PHP

我正在嘗試從dbConnect.php文件中的PHP創建過程,該文件可用於提供對數據庫的訪問。 該文件包含在每個需要數據庫訪問的文件中。 不幸的是,這意味着已經創建的存儲過程導致代碼拋出錯誤(因為它試圖創建已經存在的存儲過程)。

我曾嘗試在這里尋求有關存儲過程的幫助,以及在互聯網上尋找有助於創建存儲過程的任何方法,但是我能找到的例子是刪除存儲過程(如果已創建)的示例。 這似乎是一種巨大的浪費,因為每次需要數據庫訪問時都會調用一些潛在的昂貴方法。

我正在嘗試,而不是拖放並重新創建,而是檢查是否存在,如果不存在,則創建它。 換句話說,我想執行以下操作:

$storedProcedureExists = $connection->query(/* some query that checks for the existence of that stored procedure */);
if (!$storedProcedureExists)
{
     // create the stored procedure here
}

您可以使用以下查詢來確定過程是否存在:

SELECT COUNT(*) AS found
FROM information_schema.routines
WHERE routine_schema = 'yourDBname'
AND routine_name = 'yourProcedureName'

如果$row['found']1則該過程已存在;如果為0 ,則該過程不存在。

可在INFORMATION_SCHEMA數據庫ROUTINES表中查詢存儲的過程。

您可以使用此查詢在數據庫中查找存儲過程的名稱,假設您的數據庫名稱為dbname而過程名稱為procname

SELECT ROUTINE_NAME
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE="PROCEDURE"
  AND ROUTINE_SCHEMA="dbname"
  AND ROUTINE_NAME="procname"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM