1. 程式人生 > >mysql儲存過程中 declare 和 set 定義變數的區別

mysql儲存過程中 declare 和 set 定義變數的區別

mysql儲存過程中,定義變數有兩種方式:
1.使用set或select直接賦值,變數名以 @ 開頭.
例如:set @var=1;
可以在一個會話的任何地方宣告,作用域是整個會話,稱為會話變數

2.以 DECLARE 關鍵字宣告的變數,只能在儲存過程中使用,稱為儲存過程變數,例如:
DECLARE var1  INT DEFAULT 0;  
主要用在儲存過程中,或者是給儲存傳引數中。

兩者的區別是:
在呼叫儲存過程時,以DECLARE宣告的變數都會被初始化為 NULL。而會話變數(即@開頭的變數)則不會被再初始化,在一個會話內,只須初始化一次,之後在會話內都是對上一次計算的結果,就相當於在是這個會話內的全域性變數。

在儲存過程中,使用動態語句,預處理時,動態內容必須賦給一個會話變數。
例:
set @v_sql= sqltext;
PREPARE stmt FROM @v_sql;  
EXECUTE stmt;     
DEALLOCATE PREPARE stmt;

相關推薦

MySQL儲存過程declareset定義變數區別

  在儲存過程中常看到declare定義的變數和@set定義的變數。簡單的來說,declare定義的類似是區域性變數,@set定義的類似全域性變數。  1、declare定義的變數類似java類中的區域性變數,僅在類中生效。即只在儲存過程中的begin和end之間生效。  2

mysql儲存過程 declare set 定義變數區別

mysql儲存過程中,定義變數有兩種方式: 1.使用set或select直接賦值,變數名以 @ 開頭. 例如:set @var=1; 可以在一個會話的任何地方宣告,作用域是整個會話,稱為會話變數。 2.以 DECLARE 關鍵字宣告的變數,只能在儲存過程中使用,稱為儲存過

儲存過程SELECT與SET變數賦值

Create proc insert_book @param1char(10),@param2varchar(20),@param3money,@param4moneyoutput with encryption---------加密 as insert int

mysql儲存過程使用select count(*) into 變數名 from +表+ where條件的用法

select count(*) into v_count from dual where userid=2;此語句的意思就是根據where條件查詢dual表,得到的行數存入變數v_count中(給變數賦值) 只能在儲存過程中編寫這樣的語句?如果在mysql的sql語句中編寫

MySql儲存過程傳參不傳參以及java呼叫程式碼

資料庫表結構 1.mysql不傳參寫儲存過程 create procedure product() -- product為儲存過程名稱 begin select * from book; end 呼叫此儲存過程為 CALL product

MySql儲存過程的基本函式需要用到的運算子

mysql儲存過程學習總結-操作符算術運算子+ 加 SET var1=2+2; 4- 減 SET var2=3-2; 1* 乘 SET var3=3*2; 6/ 除 SET var4=10/3; 3.3333DIV 整除 SET var5=10 DIV 3; 3% 取模 SET var6=10%3 ; 1比較

MySQL儲存過程定義變數有兩種方式

MySQL儲存過程中,定義變數有兩種方式: 1.使用set或select直接賦值,變數名以 @ 開頭. 例如:set @var=1; 可以在一個會話的任何地方宣告,作用域是整個會話,稱為會話變數。

mysql儲存過程以及日誌資料恢復

MySQL儲存過程 Mysql儲存過程是一組為了完成特定功能的SQL語句集,經過編譯之後儲存在資料庫中, 當需要使用該組SQL語句時使用者只需要通過指定儲存過程的名字並給定引數就可以呼叫執行它了 簡而言之就是一組已經寫好的命令,需要使用的時候拿出來用就可以了。 \d //(修改語句結

MySQL儲存過程的3種迴圈,儲存過程的基本語法,ORACLE與MYSQL儲存過程/函式的使用區別,退出儲存過程方法

  學無止境 部落格園   首頁   新隨筆   聯絡   訂閱  管理 隨筆-1968  評論-103  文章-4&

MySQL 儲存過程執行DDL

一、定期增加表分割槽 1、增加表分割槽例 CREATE DEFINER=`root`@`127.0.0.1` PROCEDURE `p_create_Partition`(IN databaseName VARCHAR(50),IN tableName VARCHAR(50))L_END:BEGIN&nb

oracle儲存過程isas 的使用

在儲存過程(PROCEDURE)和函式(FUNCTION)中兩者都可以使用,但是有區別:使用IS 將無法使用除錯模式除錯該儲存過程(函式) 在檢視(VIEW)中只能用AS不能用IS; 在遊標(CURSO

Sql Server儲存過程輸入輸出引數(簡單例項,一看就懂)

-- ===================【建立儲存過程】===================== USE [Message] GO /****** Object: StoredProcedure [dbo].[讀取外部資料庫查詢] Script Date:

Mysql儲存過程字串分割

今在專案中碰到了要把字串分割,記錄下來,以後可能還用的到 首先想上我的儲存過程程式碼 DELIMITER $$ USE `bplate`$$ DROP PROCEDURE IF EXISTS `lp_plate_insertplateinfo`$$ CREATE DE

mysql 儲存過程limit

1、mysql的高版本(5.5),儲存過程中的limit可以使用變數,如下:select * from student limit iStart,iNum; 2、mysql的低版本(5.1),儲存過程中的limit不能使用變數,編譯報錯,如下:You have an error in your SQL sy

mysql 儲存過程使用多遊標

mysql的儲存過程可以很方便使用遊標來實現一些功能,儲存過程的寫法大致如下: 先建立一張表,插入一些測試資料: DROP TABLE IF EXISTS netingcn_proc_test; CREATE TABLE `netingcn_proc_test`

oracle儲存過程isas的區別

create or replace procedure imp_person_medical(v_t_table_name varchar2,v_result out varchar2) as /*

MySQL儲存過程的三種迴圈方式

“明月別枝驚鵲,清風半夜鳴蟬” 最近儲存過程寫得多,迴圈多數用在遊標裡,在這裡總結幾種迴圈的方式 CREATE DEFINER=`root`@`localhost` PROCEDURE `NewProc`() BEGIN DECLARE sta

sql(joinon與where區別) / NVL函式 / oracle儲存過程isas區別 / JAVA呼叫資料庫儲存過程

left join :左連線,返回左表中所有的記錄以及右表中連線欄位相等的記錄。 right join :右連線,返回右表中所有的記錄以及左表中連線欄位相等的記錄。 inner join: 內連線,又叫等值連線,只返回兩個表中連線欄位相等的行。 full join:外連線,返回兩個表中的行:left jo

mysql儲存過程的三種迴圈

#loop drop procedure if exists p1_; create procedure p1_ ( in in_ int , out out_ varchar(3)) #varch

mysql 儲存過程1064問題事例

今天晚上室友說我看看你寫的那個框架,聽說查詢十萬條資料只需要幾秒鐘,我當然願意展示,開始準備環境: 在公司我是用的oracle,我就把寫的儲存過程拿出來在我本地的mysql中執行,結果一執行報錯: You have an error in your SQL syntax;