데이터베이스 데이터의 모든 모양의 첫번째 1,
2, 매개 변수 저장되지 절차
- (1)에서 MySQL 세퍼레이터 세트 및 DELIMITER 및 - 2. 삭제 저장된 프로 시저 PROC1 있으면 드롭 PROCEDURE 는 IF가 EXISTS proc1` ' 및 - 3. 프로 시저가 정의 (NO 참조) (가) CREATE PROCEDURE의 (PROC1)를 시작 - 4. 특정 SQL 수행 은 SELECT COUNT ( *를 ) 로부터 T1 T 를 Where t.name 에서 LIKE ' % 1 %. ' , 단부 - (5)의 단부 및 - 제의 MySQL에서 세퍼레이터 세트, 분리, - - 7. 저장 프로 시저 호출 통화 PROC1은 (); -PROC1 8. 저장 프로 시저가 삭제되면 존재 드롭 PROCEDURE 는 IF가 EXISTS PROC1은;
3, 매개 변수 전달
- (1)에서의 MySQL 세퍼레이터 세트 및 DELIMITER 및 - (2) 삭제 된 프로 시저가 있으면 PROC1 드롭 PROCEDURE 는 IF가 EXISTS proc1` ' 및 - 3. 정의 프로 시저 (수신 매개 변수 문자열 유형) 생성 PROCEDURE PROC1 ( IN N- CHAR ) (가) BEGIN - 특정 SQL을 수행하는 제 은 SELECT COUNT를 ( * ) FROM T1 T 를 Where t.name 에서 LIKE CONCAT ( ' % ' , N-, ' % ' ), 엔드 - (5)의 단부 및 - 제의 MySQL 세퍼레이터; 설정; DELIMITER] - 7. 설정 변수 집합을 @name = ' . 1 ' ] - 파라미터를 전달하는 제 프로 시저 호출 는 CALL PROC1 ( @name ) - . 9 이 경우 저장 프로 시저 PROC1 삭제 DROP PROCEDURE IF가 존재 PROC1을;
4, 인바운드 및 아웃 바운드 매개 변수
-- 1.将mysql分隔符从;设置为& DELIMITER & -- 2.如果存在存储过程proc1则删除 DROP PROCEDURE IF EXISTS `proc1` & -- 3.定义存储过程(传入参数,类型字符串。传出参数,类型整型) CREATE PROCEDURE proc1(IN n CHAR, OUT c INT) BEGIN -- 4.执行指定sql(into就是把数据放到指定变量里,这里就是放到c) SELECT COUNT(*) INTO c FROM t1 t WHERE t.name LIKE CONCAT('%',n,'%'); END -- 5.结束 & -- 6.将mysql分隔符从;设置为; DELIMITER ; -- 7.设置变量 SET @name='1'; SET @count=0; -- 8.调用存储过程,传入传出参数 CALL proc1(@name, @count); -- 9.打印 SELECT @count; -- 10.如果存在存储过程proc1则删除 DROP PROCEDURE IF EXISTS proc1;
5、动态sql(无参)
-- 1.将mysql分隔符从;设置为& DELIMITER & -- 2.如果存在存储过程proc1则删除 DROP PROCEDURE IF EXISTS `proc1` & -- 3.定义存储过程(无参) CREATE PROCEDURE proc1() BEGIN -- 4.声明变量 DECLARE $sqltext VARCHAR(1000); -- 5.动态sql SET $sqltext = 'SELECT COUNT(*) FROM t1 t where t.name like \'%1%\';'; -- 一直需要这,不然会报错,目前没有找到资料 SET @sqlcounts := $sqltext; -- 6.预编释,stmt预编释变量的名称 PREPARE stmt FROM @sqlcounts; -- 7.执行SQL语句 EXECUTE stmt; -- 8.释放资源 DEALLOCATE PREPARE stmt; END -- 9.结束 & -- 10.将mysql分隔符从;设置为; DELIMITER ; -- 11.调用存储过程,无参 CALL proc1(); -- 12.如果存在存储过程proc1则删除 DROP PROCEDURE IF EXISTS proc1;
6、动态sql,传入传出参数
-- 1.将mysql分隔符从;设置为& DELIMITER & -- 2.如果存在存储过程proc1则删除 DROP PROCEDURE IF EXISTS `proc1` & -- 3.定义存储过程(传入参数,类型字符串。传出参数,类型整型) CREATE PROCEDURE proc1(IN n CHAR, OUT s INT) BEGIN -- 4.声明变量 DECLARE $sqltext VARCHAR(1000); -- 5.动态sql,把sql返回值放到@ret_date中 SET $sqltext = CONCAT('SELECT COUNT(*) into @ret_date FROM t1 t where t.name like \'%', n, '%\''); -- 一直需要这,不然会报错,目前没有找到资料 SET @sqlcounts := $sqltext; -- 6.预编释,stmt预编释变量的名称 PREPARE stmt FROM @sqlcounts; -- 7.执行SQL语句 EXECUTE stmt; -- 8.释放资源 DEALLOCATE PREPARE stmt; -- 9.获取动态SQL语句返回值 SET s = @ret_date; END -- 10.结束 & -- 11.将mysql分隔符从;设置为; DELIMITER ; -- 12.设置变量 SET @name='1'; SET @count=0; -- 13.调用存储过程,传入传出参数 CALL proc1(@name, @count); -- 14.打印 SELECT @count; -- 15.如果存在存储过程proc1则删除 DROP PROCEDURE IF EXISTS proc1;
参考文章:https://www.cnblogs.com/end/archive/2011/04/01/2002662.html