1. 程式人生 > 實用技巧 >MySQL procedure & function 儲存過程 & 儲存函式

MySQL procedure & function 儲存過程 & 儲存函式

  1. 結合佔位符
    drop PROCEDURE if EXISTS test12;
    -- 使用drop 來刪除儲存過程或者表
    
    create PROCEDURE test12()
    -- 建立儲存過程 命名為test12 
    
    BEGIN
    
      set @tableNames = CONCAT('background');
      -- '@' 先在使用者變數中儲存值然後在以後引用它
    
      set @beanId = 6;
    
      set @sqlStr = CONCAT('select * from ' ,@tableNames ,
       ' where background_id = ?' );
       
    -- 拼接查詢總記錄的SQL語句 prepare stmt from @sqlStr; -- 預定義一個語句,並將它賦給 stmt execute stmt using @beanId; -- 執行語句 deallocate prepare stmt; -- 要釋放一個預定義語句的資源 END; call test12(); -- 儲存過程的執行測試

  2. CREATE DEFINER=`root`@`%` PROCEDURE `loop3`(table_name1 varchar(44),table_name2 varchar(44))
    BEGIN
    #Routine body goes here... set @tableName1=concat(table_name1); set @tableName2=concat(table_name2); set @sqlStr=concat('select * from ',@tableName1,' limit 5'); prepare stmt from @sqlStr; execute stmt; -- deallocate prepare stmt; set @sqlStr_=concat('select * from
    ',@tableName2,' limit 5'); prepare stmt from @sqlStr_; execute stmt; deallocate prepare stmt; END

  3. create PROCEDURE tests(tableName varchar(20)) 
    -- 建立儲存過程 命名為tests
    
    BEGIN   -- 儲存過程的開始
    
      set @tableNames = CONCAT(tableName); 
      -- @先在使用者變數中儲存值然後在以後引用它
    
      set @sqlStr = CONCAT('select * from ', @tableNames);
      -- 拼接查詢總記錄的SQL語句 
    
      prepare stmt from @sqlStr; -- 預定義一個語句,並將它賦給 stmt
    
      execute stmt ; -- 執行語句
    
      deallocate prepare stmt;-- 要釋放一個預定義語句的資源
    
    END;  -- 儲存過程的結束