Oracle学习笔记:oracle和serverver在过程sql中通过select对变量进行赋值的区别
生活随笔
收集整理的這篇文章主要介紹了
Oracle学习笔记:oracle和serverver在过程sql中通过select对变量进行赋值的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
變量的聲明:
- oracle的變量必須在在declare部分聲明——意思是必須建立begin end塊,塊結構也強制變量必須先聲明后使用,即oracle變量在過程內是有不同作用域、不同的生存期的;同一變量可以在不同的作用域內定義多次,內層的會override外層的定義;
- sqlserver的變量可以在過程的任何部分聲明——sqlserver有且只有一個作用域,但只有聲明后的部分才可以使用變量——不同的生存期;
?
變量的初始化:
- oracle可以在聲明是設置默認值;默認初始化值為null
- sqlserver不能在聲明是設置默認值;默認初始化值為null
?
select賦值的語法
- oracle為 select expr,...? into variable,...? from table where ....
- sqlserver為 select @variable=expr,... from table where ...
?
錯誤處理:
- oracle通過select ... into? ... from ... 賦值會產生錯誤!必須有錯誤處理,過程才能成功執行,否則過程拋出錯誤給應用程序;變量的值不受該錯誤操作的影響!
無值——變量保持select ... into? ... from ...之前的狀態
多值——變量保持select ... into? ... from ...之前的狀態
- ?sqlserver的select @variable=expr不會產生錯誤,無需錯誤處理;但變量的值受影響
無值——變量保持select @variable=expr之前的狀態
多值——變量的值實際上是select expr 結果集最后一行的記錄的值,而不是第一行!!
?
?
?
?
?
總結
以上是生活随笔為你收集整理的Oracle学习笔记:oracle和serverver在过程sql中通过select对变量进行赋值的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IE无法打开新窗口与U盘不显示故障的解决
- 下一篇: 在esx server VI里导入其它虚