mysql--存储过程

-- 创建一个表:t_user; 
-- 创建一个存储过程;
-- 有参:IN:根据用户名查询用户信息; OUT: 根据用户名查出用户所对应的ID
-- 无参:计算t_user表中的所有数据的条数


CREATE TABLE
 t_user 
 ( 
  USER_ID INT NOT NULL AUTO_INCREMENT, 
  USER_NAME CHAR(30) NOT NULL, 
  USER_PASSWORD CHAR(10) NOT NULL, 
  USER_EMAIL CHAR(30) NOT NULL, 
  PRIMARY KEY (USER_ID), 
  INDEX IDX_NAME (USER_NAME) 
 ) 
 ENGINE=InnoDB DEFAULT CHARSET=utf8; 


-- 查询表t_user的总条数 无参的存储过程
CREATE PROCEDURE sp_test()
BEGIN
 -- sql语句 : 看sql语句的功能?
 SELECT COUNT(*) FROM t_user;
END




CALL sp_test();


--oracle 
create or replace procedure p
is
begin
-- 写sql语句
-- select name into outname from t_user where id = iid;
end


begin
p;
end;

-- 根据名字查出用户的信息 PROCEDURE 

CREATE PROCEDURE SP_SEARCH(IN p_name CHAR(20)) 
BEGIN
IF p_name is null or p_name='' THEN
SELECT * FROM t_user; 
ELSE
SELECT * FROM t_user WHERE USER_NAME LIKE p_name; 
END IF; 
END
-- 调用存储过程


CALL  SP_SEARCH('%高%')


CALL  SP_SEARCH('高圆圆')




CREATE PROCEDURE SP_SEARCH2(IN p_name CHAR(20),OUT p_int INT) 
BEGIN
IF p_name is null or p_name='' THEN
SELECT * FROM t_user; 
ELSE
SELECT * FROM t_user WHERE USER_NAME LIKE p_name; 
END IF; 
-- INTO 代表赋值的意思; 把FOUND_ROWS()= p_int 
SELECT FOUND_ROWS() INTO p_int;
END


CALL SP_SEARCH2('张%',@p_num); 
SELECT @p_num;


-- 把表名作为参数传递的存储过程 我们经常会用到一个分页:total:总条数。
create PROCEDURE sp_C(IN tb_name char(10))
BEGIN
SET @sql = CONCAT('select count(*) from ',tb_name);
-- 定义语句并指定名称为stmt 
PREPARE stmt FROM @sql;
-- 执行预备stmt语句
EXECUTE stmt;
-- 删除定义
DEALLOCATE PREPARE stmt;
END
-- 调用存储过程
CALL sp_C('student');
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章