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...