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');
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章