《Mysql實例MySql帶參數存儲過程(動態執行SQL語句)》要點:
本文介紹了Mysql實例MySql帶參數存儲過程(動態執行SQL語句),希望對您有用。如果有疑問,可以聯系我們。
導讀:本文分享的這個mysql存儲過程是根據用戶輸入的條件和排序方式查詢用戶的信息,排序條件可以沒有.挪用方式:call GetUsersDynamic(age<=30...
MYSQL教程本文分享的這個mysql存儲過程是根據用戶輸入的條件和排序方式查詢用戶的信息,排序條件可以沒有.
MYSQL教程挪用方式:call GetUsersDynamic('age<=30','');
MYSQL教程代碼:
?
/********動態查詢用戶的信息********/
CREATE PROCEDURE GetUsersDynamic(WhereCondition varchar(500),OrderByExpress varchar(100))
begin
declare stmt varchar(2000);
if LENGTH(OrderbyExpress)>0 then
begin
???? set @sqlstr=concat('select id,name,password,age,getdate(adddate) as AddDate from users where ',WhereCondition,' order by ',OrderByExpress);
end;
else
begin
???? set @sqlstr=concat('select id,name,password,age,getdate(adddate) as AddDate from users where ',WhereCondition);
end;
end if;
prepare stmt from @sqlstr;
execute stmt;
end;
?
MYSQL教程getdate()是一個自界說的函數,作用是返回日期的短格式
?
CREATE DEFINER=`root`@`localhost` FUNCTION `getdate`($date datetime) RETURNS varchar(50) CHARSET latin1
return date_format($date,'%Y-%m-%d');
MYSQL教程動態插入數據的存儲過程,(注意四個單引號表現一個一引號):
?
CREATE DEFINER=`root`@`localhost` PROCEDURE `InsertUser`(in name2 varchar(50),in password2 varchar(32),in age2 int,in adddate2 datetime)
begin
DECLARE stmt varchar(2000);
set @sqlstr=concat('insert into users(name,password,age,adddate) values(');
set @sqlstr=concat(@sqlstr,'''',name2,'''',',','''',password2,'''',',',age2,',','''',adddate2,'''',')');
prepare stmt from @sqlstr;
execute stmt;
end;
?
MYSQL教程附,另一種帶參數的形式,在mysql存儲進程中動態執行sql文.
代碼:
?
mysql> PREPARE stmt1 FROM 'SELECT SQRT(POW(必修,2) + POW(必修,2)) AS hypotenuse';
mysql> SET @a = 3;
mysql> SET @b = 4;
mysql> EXECUTE stmt1 USING @a, @b;
mysql> SET @a = 'select * from table1 ';
mysql> SET @b = 'where column1>10 limit 1';
mysql> SET @a = concat(@a,@b);
mysql> PREPARE stmt1 FROM @a;
mysql> EXECUTE stmt1;
維易PHP培訓學院每天發布《Mysql實例MySql帶參數存儲過程(動態執行SQL語句)》等實戰技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養人才。
轉載請注明本頁網址:
http://www.fzlkiss.com/jiaocheng/12059.html