mysql儲存過程中的ifeists判斷問題

時間 2021-08-30 11:13:07

1樓:暖萱紫菱

mysql沒有drop index index_name if exists on table_name這樣的語法,所以寫乙個儲存過程來判斷,如果存在就刪除後再建立新的索引。儲存過程如下:

---- procedure of delete index

--drop procedure if exists del_idx;

delimiter $$

create procedure del_idx(in p_tablename varchar(200), in p_idxname varchar(200))

begin

declare str varchar(250);

set @str=concat(' drop index ',p_idxname,' on ',p_tablename);

select count(*) into @cnt from information_schema.statistics where table_name=p_tablename and index_name=p_idxname;

if @cnt >0 then

prepare stmt from @str;

execute stmt ;

end if;

end $$

delimiter ;

使用時傳入表名和索引名即可,如call del_idx('tablea', 'indexa');

2樓:

select沒有if exists 語法,你可以用select count(*) from information_schema.tables where table_schema='your_schema' and table_name='your_tab';看返回0還是1來判斷。

3樓:

select if(count(*),1,0) from (select * from s_face limit 1) t

一句sql就能得到你的答案,為什麼要用個儲存過程

儲存過程插入,如何在儲存過程中實現插入更新資料

資料型別不匹配的原因吧,你在檢查下。還有缺少乙個end與begin對應 缺少乙個end與begin對應 如何在儲存過程中實現插入更新資料 pl sql寫儲存過程,怎麼插入新資料 在儲存過程中插入資料肯定用到sql語句,寫好insert語句就好了。create or replace procedure...

在開發過程中為什麼需要寫儲存過程

讀書人的日子 儲存過程說白了就是一堆 sql 的合併。中間加了點邏輯控制。但是儲存過程處理比較複雜的業務時比較實用。比如說,一個複雜的資料操作。如果你在前臺處理的話。可能會涉及到多次資料庫連線。但如果你用儲存過程的話。就只有一次。從響應時間上來說有優勢。也就是說儲存過程可以給我們帶來執行效率提高的好...

mssql在儲存過程中怎樣執行用變數組合的sql語句

動態sql拼接,大致上是這樣 declare empcode nvarchar 10 declare sql text nvarchar 100 declare result nvarchar 20 set empcode 1001 set sql text select c name from e...