MySql存储过程 带参数处理方式

  下文介绍的MySql存储过程是带参数的存储过程(动态执行SQL语句),该MySql存储过程是根据用户输入的条件和排序方式查询用户的信息,排序条件可以没有调用方式:

  call GetUsersDynamic('age<=30','');


  1. /********动态查询用户的信息********/    
  2. CREATE PROCEDURE GetUsersDynamic(WhereCondition varchar(500),OrderByExpress varchar(100))    
  3. begin    
  4. declare stmt varchar(2000);    
  5. if LENGTH(OrderbyExpress)>0 then    
  6. begin    
  7.      set @sqlstr=concat('select id,name,password,age,getdate(adddate) as AddDate from users where ',WhereCondition,' order by ',OrderByExpress);    
  8. end;    
  9. else    
  10. begin    
  11.      set @sqlstr=concat('select id,name,password,age,getdate(adddate) as AddDate from users where ',WhereCondition);    
  12. end;    
  13. end if;    
  14. prepare stmt from @sqlstr;    
  15. execute stmt;    
  16. end;   

  getdate()是一个自定义的函数,作用是返回日期的短格式


  1. CREATE DEFINER=`root`@`localhost` FUNCTION `getdate`($date datetime) RETURNS varchar(50) CHARSET latin1    
  2. return date_format($date,'%Y-%m-%d');  

  动态插入数据的MySql存储过程,(注意四个单引号表示一个一引号):


  1. CREATE DEFINER=`root`@`localhost` PROCEDURE `InsertUser`(in name2 varchar(50),in password2 varchar(32),in age2 int,in adddate2 datetime)    
  2. begin    
  3. DECLARE stmt varchar(2000);    
  4. set @sqlstr=concat('insert into users(name,password,age,adddate) values(');    
  5. set @sqlstr=concat(@sqlstr,'''',name2,'''',',','''',password2,'''',',',age2,',','''',adddate2,'''',')');    
  6. prepare stmt from @sqlstr;    
  7. execute stmt;    
  8. end;  

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索mysql
, 存储过程
, 排序
, 参数
, 存储过程 带参数
, 条件
方式
mysql 存储过程 参数、mysql存储过程out参数、mysql存储过程带参数、mysql 存储过程传参数、mysql 无参数存储过程,以便于您获取更多的相关知识。

时间: 2024-12-03 18:23:56

MySql存储过程 带参数处理方式的相关文章

mysql 存储过程输入输出参数示例_Mysql

drop PROCEDURE if exists my_procedure; create PROCEDURE my_procedure(in my_id int,out my_name char) BEGIN select list_name into my_name from aa_list where list_id=my_id; end; call my_procedure(24,@a); select @a; 以上是小编为您精心准备的的内容,在的博客.问答.公众号.人物.课程等栏目也有

存储过程 带参数-java调用mysql存储过程输出参数

问题描述 java调用mysql存储过程输出参数 CREATE PROCEDURE T_WEATHER_PRO (IN tmdn VARCHAR(12),OUT tmsg VARCHAR(12)) BEGIN DECLARE states,beginTime,endTime VARCHAR(2) ; SELECT T_STATES,T_BEGINTIME,T_ENDTIME INTO states,beginTime,endTime FROM T_USER_WEATHER WHERE T_USE

字符集-mysql 存储过程输出参数中文返回乱码

问题描述 mysql 存储过程输出参数中文返回乱码 我用C++ 通过ODBC访问mysql 数据库,mysql 数据库版本是5.6.12 odbc驱动版本5.2.5 数据库的字符集全部设置为utf8 驱动的字符集也设置为utf8. 程序中通过select直接从表中查出,中文不会乱码, 但通过存储过程的输出参数返回就是乱码. 求大神们帮忙.谢谢 解决方案 在存储过程里查询的时候,指定查询字符集

MySQL 存储过程传参数实现where id in(1,2,3,...)示例_Mysql

正常写法: 复制代码 代码如下: select * from table_name t where t.field1 in (1,2,3,4,...); 当在写存储过程in里面的列表用个传入参数代入的时候,就需要用到如下方式: 主要用到find_in_set函数 复制代码 代码如下: select * from table_name t where find_in_set(t.field1,'1,2,3,4'); 当然还可以比较笨实的方法,就是组装字符串,然后执行: 复制代码 代码如下: DRO

存储过程 带参数-在调用存储过程时传入值不会被解析

问题描述 在调用存储过程时传入值不会被解析 if(!$is_exist2){ $sql_page=" create procedure page_art(in off int(10),in page_size int(10)) BEGIN select id,title,addtime,type from cj_art where type=9 order by addtime desc limit off,page_size; END "; //建立存储过程 mysql_query(

存储过程 带参数-SQL SERVER 存储过程问题

问题描述 SQL SERVER 存储过程问题 目的: 创建一个存储过程,入口参数是 表名称 ,功能是 若该表不存在就创建之 . 我的做法: CREATE PROCEDURE [dbo].[CCT] @TblName varchar(32) AS begin Declare @vproc As varchar(8000) set @vproc=' if object_id(['+@TblName+']) is null begin Create Table '+@TblName+' not nul

MySQL 存储过程参数:in、out、inout

一.MySQL 存储过程参数(in) MySQL 存储过程 "in" 参数:跟 C 语言的函数参数的值传递类似, MySQL 存储过程内部可能会修改此参数,但对 in 类型参数的修改,对调用者(caller)来说是不可见的(not visible). Java代码   drop procedure if exists pr_param_in;   create procedure pr_param_in(       in id int -- in 类型的 MySQL 存储过程参数  

详解MySQL存储过程参数有三种类型(in、out、inout)_Mysql

一.MySQL 存储过程参数(in) MySQL 存储过程 "in" 参数:跟 C 语言的函数参数的值传递类似, MySQL 存储过程内部可能会修改此参数,但对 in 类型参数的修改,对调用者(caller)来说是不可见的(not visible). 复制代码 代码如下: drop procedure if exists pr_param_in; create procedure pr_param_in ( in id int -- in 类型的 MySQL 存储过程参数 ) begi

mysql存储过程详细教程

记录MYSQL存储过程中的关键语法: DELIMITER //  声明语句结束符,用于区分;CREATE PROCEDURE demo_in_parameter(IN p_in int)  声明存储过程BEGIN .... END  存储过程开始和结束符号SET @p_in=1   变量赋值 DECLARE l_int int unsigned default 4000000;  变量定义 什么是mysql存储例程? 存储例程是存储在数据库服务器中的一组sql语句,通过在查询中调用一个指定的名称