-- 创建一个表: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');
-- 创建一个存储过程;
-- 有参: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');