4.6.2 BEGIN鈥ND
鍏惰娉曞涓嬶細(xì)
BEGIN
<鍛戒護(hù)琛屾垨紼嬪簭鍧?gt;
END
BEGIN鈥ND鐢ㄦ潵璁懼畾涓涓▼搴忓潡錛屽皢鍦˙EGIN鈥ND鍐呯殑鎵鏈夌▼搴忚涓轟竴涓崟鍏冩墽琛孊EGIN鈥ND緇忓父鍦ㄦ潯浠惰鍙ワ紝濡侷F鈥LSE涓嬌鐢ㄣ傚湪BEGIN鈥ND涓彲宓屽鍙﹀鐨凚EGIN鈥ND鏉ュ畾涔夊彟涓紼嬪簭鍧椼?
4.6.3 CASE
CASE 鍛戒護(hù)鏈変袱縐嶈鍙ユ牸寮?
CASE <榪愮畻寮?gt;
WHEN <榪愮畻寮?gt;THEN<榪愮畻寮?gt;
鈥?
WHEN<榪愮畻寮?gt;THEN<榪愮畻寮?gt;
[ELSE<榪愮畻寮?gt;]
END
CASE
WHEN <鏉′歡琛ㄨ揪寮?gt; THEN <榪愮畻寮?gt;
WHEN <鏉′歡琛ㄨ揪寮?gt; THEN <榪愮畻寮?gt;
[ELSE <榪愮畻寮?gt;]
END
CASE鍛戒護(hù)鍙互宓屽鍒癝QL鍛戒護(hù)涓? 渚?-10錛氳皟鏁村憳宸ュ伐璧勶紝宸ヤ綔綰у埆涓衡?鈥濈殑涓婅皟8%錛屽伐浣滅駭鍒負(fù)鈥?鈥濈殑涓婅皟7%錛屽伐浣滅駭鍒負(fù)鈥?鈥濈殑涓婅皟6%錛屽叾瀹冧笂璋?%銆? use pangu
update employee
set e_wage =
case
when job_level = 鈥?鈥?then e_wage*1.08
when job_level = 鈥?鈥?then e_wage*1.07
when job_level = 鈥?鈥?then e_wage*1.06
else e_wage*1.05
end
娉ㄦ剰:鎵цCASE瀛愬彞鏃訛紝鍙繍琛岀涓涓尮閰嶇殑瀛愬悕銆?
4.6.4 WHILE鈥ONTINUE鈥REAK
鍏惰娉曞涓?
WHILE <鏉′歡琛ㄨ揪寮?gt;
BEGIN
<鍛戒護(hù)琛屾垨紼嬪簭鍧?gt;
[BREAK]
[CONTINUE]
[鍛戒護(hù)琛屾垨紼嬪簭鍧梋
END
WHILE 鍛戒護(hù)鍦ㄨ瀹氱殑鏉′歡鎴愮珛鏃朵細(xì)閲嶅鎵ц鍛戒護(hù)琛屾垨紼嬪簭鍧椼侰ONTINUE鍛戒護(hù)鍙互璁╃▼搴忚煩榪嘋ONTINUE 鍛戒護(hù)涔嬪悗鐨勮鍙ワ紝鍥炲埌WHILE 寰幆鐨勭涓琛屽懡浠ゃ侭REAK 鍛戒護(hù)鍒欒紼嬪簭瀹屽叏璺沖嚭寰幆錛岀粨鏉焀HILE 鍛戒護(hù)鐨勬墽琛屻俉HILE 璇彞涔熷彲浠ュ祵濂椼?
渚?-11:
declare @x int @y int @c int
渚?-11:
declare @x int, @y int, @c int
select @x = 1, @y=1
while @x < 3
begin
print @x --鎵撳嵃鍙橀噺x 鐨勫? while @y < 3
begin
select @c = 100*@ x+ @y
print @c --鎵撳嵃鍙橀噺c 鐨勫? select @y = @y + 1
end
select @x = @x + 1
select @y = 1
end
榪愯緇撴灉濡備笅
1
101
102
2
201
202
]]>re: 鎴戠殑java瀛︿範(fàn)絎旇錛堢涓绔?鍥為【C/C++ 鍩烘湰姒傚康錛?/title>http://m.tkk7.com/plpa/archive/2005/04/01/2673.html#2678鍣奸噷鍟暒鐨勪笘鐣?/dc:creator>鍣奸噷鍟暒鐨勪笘鐣?/author>Thu, 31 Mar 2005 22:53:00 GMThttp://m.tkk7.com/plpa/archive/2005/04/01/2673.html#2678鏈鍩烘湰鐨勭敤娉?
const int a=100; b鐨勫唴瀹逛笉鍙?b鍙兘鏄?00涔熷氨鏄0鏄庝竴涓猧nt綾誨瀷鐨勫父閲?#define b =100)
int const b=100; //鍜屼笂闈綔鐢ㄤ竴鏍?
const鎸囬拡鍜屽紩鐢ㄤ竴鑸敤鍦ㄥ嚱鏁扮殑鍙傛暟涓? int* m = &a; //鍑洪敊,甯擱噺鍙兘鐢ㄥ父鎸囬拡
int c= 1;const int*pc = &c;//甯告寚閽堝彲鎸囧悜甯擱噺
const int* pa = &a; //鎸囬拡鎸囧悜鐨勫唴瀹逛負(fù)甯擱噺(灝辨槸b鐨勫間笉鍙?
int const *a = &b; //鎸囬拡鎸囧悜鐨勫唴瀹逛負(fù)甯擱噺(灝辨槸b鐨勫間笉鍙?*p=3//error
int* const a = &b; //鎸囬拡涓哄父閲?涓嶈兘鏇存敼鎸囬拡浜嗗 a++浣嗗彲浠ユ敼鍊?p=3;
int A(int)const; //鏄父鍑芥暟錛屽彧鑳界敤鍦ㄧ被涓紝璋冪敤瀹冪殑瀵硅薄涓嶈兘鏀規(guī)敼鍙樻垚鍛樺? const int A(); //榪斿洖鐨勬槸甯擱噺,鎵浠ュ繀欏昏繖涔堣皟鐢?cosnt int a=A();
int A(const int); //鍙傛暟涓嶈兘鏀瑰?鍙敤鍦ㄤ換鎰忓嚱鏁? int A(const int*);
....
int height() const;//甯稿嚱鏁板彧鑳界敱甯稿嚱鏁拌皟鐢? int max(int,int) const;
int Max = max(height(),height());
const int* pHeap = new int;
delete pHeap;
p = NULL;//鍑洪敊
鎴戠殑瑙e喅鍔炴硶鏄己鍒剁被鍨嬭漿鎹? const int* pHeap = new int(1);
delete (int*)pHeap;
pHeap = NULL;
涓銆乧onst 鍜屽紩鐢ㄨ仈鍚堜嬌鐢ㄧ殑鏃跺欒娉ㄦ剰
const int a = 1;
const int& ref1 = a;
const int& ref2 = 1;
鑳戒笉鑳芥妸鑷繁鐨勭粡楠屼篃璋堣皥銆傚ぇ瀹朵氦嫻佷氦嫻? 榪欎釜灝辨槸鎴戝湪璋冮敊鏃跺彂鐜扮殑
int height() const;//甯稿嚱鏁板彧鑳界敱甯稿嚱鏁拌皟鐢? int max(int,int) const;
int Max = max(height(),height());
Thinking again in C++錛堜竴錛夊父閲忔у師鐞?cphj錛堝師浣滐級
鏈変簺鍦版柟寰堝彈鍚彂
1.涓嶈兘灝哻onst淇グ鐨勪換浣曞璞°佸紩鐢ㄥ拰鎸囬拡浣滀負(fù)璧嬪艱〃杈懼紡鐨勫乏鍊箋? const int cx=100;
const int & rcx=cx;
const int * pcx=&cx;
cx=200; //error
rcx=200; //error
*pcx=200; //error
2.const綾誨瀷鐨勫璞′笉鑳界洿鎺ヨnon-const綾誨瀷鐨勫埆鍚嶆墍寮曠敤銆? (1)涓嶈兘灝哻onst綾誨瀷鐨勫璞′紶閫掔粰non-const綾誨瀷鐨勫紩鐢ㄣ? const int cx=100;
int & rx=cx; //error
(2)涓嶈兘灝哻onst綾誨瀷鐨勫疄鍙備紶閫掔粰褰㈠弬涓簄on-const綾誨瀷寮曠敤鐨勫嚱鏁般? void f(int a)
{
}
void g(int & ra)
{
}
const int cx=100;
f(cx); //ok
g(cx); //error
(3)涓嶈兘灝哻onst綾誨瀷鐨勫璞′綔涓簄on-const綾誨瀷寮曠敤鐨勫嚱鏁拌繑鍥炲箋? int & f(const int & rca)
{
return rca; //error
}
int x=100;
f(x);
3.鍙互浣跨敤const綾誨瀷鍒悕寮曠敤non-const瀵硅薄銆傛鏃墮氳繃const寮曠敤涓嶈兘淇敼瀵硅薄錛屼絾瀵硅薄鍙互閫氳繃non-const寮曠敤琚慨鏀廣? int x=100;
int & rx=x;
const int & rcx=x; //ok
x=200;
rx=200;
rcx=200; //error
4.鎸囬拡鐨勫睘鎬ф湁涓や釜錛氭寚閽堢殑綾誨瀷鍜屾寚閽堟湰韜殑甯擱噺鎬с傚叾涓紝鎸囧悜const瀵硅薄涓庢寚鍚憂on-const瀵硅薄錛屾槸涓嶅悓鐨勬寚閽堢被鍨嬨? int x=100;
const int * pcx=&x; //[1]
int * px=&x; //[2]
int y=100;
int * const cpy=&y; //[3]
int * py=&y; //[4]
[1][2]涓や釜鎸囬拡鐨勭被鍨嬩笉鍚岋紱[3][4]涓や釜鎸囬拡鐨勫父閲忔т笉鍚屻? 瀵硅薄涓庢寚鍚戝璞$殑鎸囬拡鐨勮鍒欑被浼間簬瀵硅薄涓庡紩鐢ㄣ傚嵆錛宑onst綾誨瀷鐨勫璞′笉鑳界洿鎺ヨnon-const綾誨瀷鐨勬寚閽堟墍鎸囩ず錛堝悓2錛夛紱鍙互浣跨敤const綾誨瀷鐨勬寚閽堟寚鍚憂on-const瀵硅薄錛堝悓3錛夈?
5.鍙互灝嗙浉鍚岀被鍨嬶紙鍖呮嫭甯擱噺鎬э級鐨刢onst鎸囬拡鍊艱祴緇檔on-const鎸囬拡銆? int x=100;
int * px;
const int * pcx=&x;
px=pcx; //error
int * const cpx=&x;
px=cpx; //ok
6.鑻ュ嚱鏁扮殑榪斿洖鍊間負(fù)鍐呭緩綾誨瀷鎴栨槸鎸囬拡錛屽垯璇ヨ繑鍥炲艱嚜鍔ㄦ垚涓篶onst鎬ц川銆備絾鑷畾涔夌被鍨嬪垯涓簄on-const鎬ц川銆? int f() //鐩稿綋浜庤繑鍥瀋onst int
{
return 100;
}
int * g(int & ra) //鐩稿綋浜庤繑鍥瀒nt * const
{
return &ra;
}
class CTest
{
int n;
public:
CTest(int n){this->n=n;}
};
CTest h() //榪斿洖鐨勫氨鏄疌Test
{
return CTest(200);
}
f()=200; //error
int x=100;
int y=200;
int * px=&x;
g(y)=px; //error
*g(y)=x; //ok錛屼粠榪欑偣鍙互鐪嬪嚭g()榪斿洖鐨勪笉鏄痗onst int *
const int b=100; b鐨勫唴瀹逛笉鍙?b鍙兘鏄?00
int const b=100; b蹇呴』涓篿nt鍨?涓嶈兘涓哄叾浠栫被鍨?
榪?鍙ヨ瘽鐨勬剰鎬濆簲璇ユ槸涓鏍風(fēng)殑鍚?錛?THINKING IN C++鏄繖鏍瘋鐨?
const int a=100; a鐨勫唴瀹逛笉鍙?a鍙兘鏄?00錛堝悓鏍蜂笉鑳界被鍨嬭漿鎹級銆? int const b=100; b蹇呴』涓篿nt鍨?涓嶈兘涓哄叾浠栫被鍨?錛堝悓鏍峰湪浣跨敤涓笉鑳戒慨鏀癸級銆? 鎵浠鍜宐鏄竴鏍風(fēng)殑錛岀О涓烘暣鍨嬪父鏁幫紝鍦ㄤ嬌鐢ㄤ腑涓嶈兘琚慨鏀癸紝褰撶劧閮戒笉鑳借漿涓哄叾浠栫被鍨嬩簡銆?
#include <iostream>
using namespace std;
int main()
{
銆銆const int a = 100;
銆銆int const b = 100;
銆 a = 100; //榪欏洓鏉¤鍙ョ紪璇戞椂閮戒細(xì)鍑虹幇鈥淐annot modify a const object
b = 100; //in function main()鈥濈殑閿欒鎻愮ず錛屼篃灝辨槸璇達(dá)紝浠諱綍浼佸浘淇敼銆銆 a = 100.0;銆//a鍜宐錛堝叾瀹炴槸涓鏍風(fēng)殑錛夌殑琛屼負(fù)閮戒細(xì)鍑虹幇鈥滅伨闅鋸濓紝鍦ㄨ娉曚笂璁插氨銆銆b = 100.0; //鏄痑鍜宐閮戒笉鑳藉嚭鐜板湪璧嬪艱鍙ョ殑宸﹁竟錛?
銆銆cout<<'\n'<<a<<'\n'<<b<<endl;
銆銆return 0;
}
甯稿嚱鏁扮殑璋冪敤鏄繖鏍風(fēng)殑錛氬父閲忓璞″彧鑳借皟鐢ㄥ父鎴愬憳鍑芥暟錛岄潪甯擱噺瀵硅薄鍗沖彲浠ヨ皟甯告垚鍛樺嚱鏁幫紝涔熷彲浠ヨ皟涓鑸垚鍛樺嚱鏁幫紝浣嗗綋鏌愪釜鍑芥暟鏈塩onst鍜岄潪const涓や釜鐗堟湰鏃訛紝const瀵硅薄璋僣onst鐗堟湰錛岄潪const瀵硅薄璋冮潪const鐗堟湰
渚嬶細(xì)
class A
{
public:
int & GetData(){return data;}
const int & GetData()const {return data;}
private:
int data;
}
A a;
a.GetData();//璋冪敤int & GetData(){return data;}
//浣嗗鏋滄病鏈夎繖涓嚱鏁幫紝涔熷彲浠ヨ皟鐢╟onst int & GetData()const
const A const_a;
const_a.GetData();//璋冪敤const int & GetData()const {return data;}
甯稿嚱鏁板彧鑳借皟甯稿嚱鏁幫紝涔熸槸鐢變簬榪欎釜鍘熷洜
綆椾綘鐙狅紒鍔犱袱鐐?
涓銆乧onst 鍜屽紩鐢ㄨ仈鍚堜嬌鐢ㄧ殑鏃跺欒娉ㄦ剰
const int a = 1;
const int& ref1 = a;
const int& ref2 = 1;
]]>re: 鎴戠殑java瀛︿範(fàn)絎旇錛堢涓绔?鍥為【C/C++ 鍩烘湰姒傚康錛?/title>http://m.tkk7.com/plpa/archive/2005/04/01/2673.html#2677鍣奸噷鍟暒鐨勪笘鐣?/dc:creator>鍣奸噷鍟暒鐨勪笘鐣?/author>Thu, 31 Mar 2005 22:52:00 GMThttp://m.tkk7.com/plpa/archive/2005/04/01/2673.html#2677銆愯鍒?-3-1銆戦渶瑕佸澶栧叕寮鐨勫父閲忔斁鍦ㄥご鏂囦歡涓紝涓嶉渶瑕佸澶栧叕寮鐨勫父閲忔斁鍦ㄥ畾涔夋枃浠剁殑澶撮儴銆備負(fù)渚夸簬綆$悊錛屽彲浠ユ妸涓嶅悓妯″潡鐨勫父閲忛泦涓瓨鏀懼湪涓涓叕鍏辯殑澶存枃浠朵腑銆? 銆愯鍒?-3-2銆戝鏋滄煇涓甯擱噺涓庡叾瀹冨父閲忓瘑鍒囩浉鍏籌紝搴斿湪瀹氫箟涓寘鍚繖縐嶅叧緋伙紝鑰屼笉搴旂粰鍑轟竴浜涘绔嬬殑鍊箋? 渚嬪錛? const float RADIUS = 100;
const float DIAMETER = RADIUS * 2;
綾諱腑鐨勫父閲? 鏈夋椂鎴戜滑甯屾湜鏌愪簺甯擱噺鍙湪綾諱腑鏈夋晥銆傜敱浜?define瀹氫箟鐨勫畯甯擱噺鏄叏灞鐨勶紝涓嶈兘杈懼埌鐩殑錛屼簬鏄兂褰撶劧鍦拌寰楀簲璇ョ敤const淇グ鏁版嵁鎴愬憳鏉ュ疄鐜般俢onst鏁版嵁鎴愬憳鐨勭‘鏄瓨鍦ㄧ殑錛屼絾鍏跺惈涔夊嵈涓嶆槸鎴戜滑鎵鏈熸湜鐨勩俢onst鏁版嵁鎴愬憳鍙湪鏌愪釜瀵硅薄鐢熷瓨鏈熷唴鏄父閲忥紝鑰屽浜庢暣涓被鑰岃█鍗存槸鍙彉鐨勶紝鍥犱負(fù)綾誨彲浠ュ垱寤哄涓璞★紝涓嶅悓鐨勫璞″叾const鏁版嵁鎴愬憳鐨勫煎彲浠ヤ笉鍚屻? 涓嶈兘鍦ㄧ被澹版槑涓垵濮嬪寲const鏁版嵁鎴愬憳銆備互涓嬬敤娉曟槸閿欒鐨勶紝鍥犱負(fù)綾葷殑瀵硅薄鏈鍒涘緩鏃訛紝緙栬瘧鍣ㄤ笉鐭ラ亾SIZE鐨勫兼槸浠涔堛? class A
{鈥? const int SIZE = 100; // 閿欒錛屼紒鍥懼湪綾誨0鏄庝腑鍒濆鍖朿onst鏁版嵁鎴愬憳
int array[SIZE]; // 閿欒錛屾湭鐭ョ殑SIZE
};
const鏁版嵁鎴愬憳鐨勫垵濮嬪寲鍙兘鍦ㄧ被鏋勯犲嚱鏁扮殑鍒濆鍖栬〃涓繘琛岋紝渚嬪
class A
{鈥? A(int size); // 鏋勯犲嚱鏁? const int SIZE ;
};
A::A(int size) : SIZE(size) // 鏋勯犲嚱鏁扮殑鍒濆鍖栬〃
{
鈥? }
A a(100); // 瀵硅薄 a 鐨凷IZE鍊間負(fù)100
A b(200); // 瀵硅薄 b 鐨凷IZE鍊間負(fù)200
鎬庢牱鎵嶈兘寤虹珛鍦ㄦ暣涓被涓兘鎭掑畾鐨勫父閲忓憿錛熷埆鎸囨湜const鏁版嵁鎴愬憳浜嗭紝搴旇鐢ㄧ被涓殑鏋氫婦甯擱噺鏉ュ疄鐜般備緥濡? class A
{鈥? enum { SIZE1 = 100, SIZE2 = 200}; // 鏋氫婦甯擱噺
int array1[SIZE1];
int array2[SIZE2];
};
鏋氫婦甯擱噺涓嶄細(xì)鍗犵敤瀵硅薄鐨勫瓨鍌ㄧ┖闂達(dá)紝瀹冧滑鍦ㄧ紪璇戞椂琚叏閮ㄦ眰鍊箋傛灇涓懼父閲忕殑緙虹偣鏄細(xì)瀹冪殑闅愬惈鏁版嵁綾誨瀷鏄暣鏁幫紝鍏舵渶澶у兼湁闄愶紝涓斾笉鑳借〃紺烘誕鐐規(guī)暟錛堝PI=3.14159錛夈?
銆愯鍒?-1-1銆?灝介噺浣跨敤鍚箟鐩磋鐨勫父閲忔潵琛ㄧず閭d簺灝嗗湪紼嬪簭涓嬈″嚭鐜扮殑鏁板瓧鎴栧瓧絎︿覆銆? 渚嬪錛? #define MAX 100 /* C璇█鐨勫畯甯擱噺 */
const int MAX = 100; // C++ 璇█鐨刢onst甯擱噺
const float PI = 3.14159; // C++ 璇█鐨刢onst甯擱噺
const 涓?#define鐨勬瘮杈? C++ 璇█鍙互鐢╟onst鏉ュ畾涔夊父閲忥紝涔熷彲浠ョ敤 #define鏉ュ畾涔夊父閲忋備絾鏄墠鑰呮瘮鍚庤呮湁鏇村鐨勪紭鐐癸細(xì)
錛?錛?const甯擱噺鏈夋暟鎹被鍨嬶紝鑰屽畯甯擱噺娌℃湁鏁版嵁綾誨瀷銆傜紪璇戝櫒鍙互瀵瑰墠鑰呰繘琛岀被鍨嬪畨鍏ㄦ鏌ャ傝屽鍚庤呭彧榪涜瀛楃鏇挎崲錛屾病鏈夌被鍨嬪畨鍏ㄦ鏌ワ紝騫朵笖鍦ㄥ瓧絎︽浛鎹㈠彲鑳戒細(xì)浜х敓鎰忔枡涓嶅埌鐨勯敊璇紙杈歸檯鏁堝簲錛夈? 錛?錛?鏈変簺闆嗘垚鍖栫殑璋冭瘯宸ュ叿鍙互瀵筩onst甯擱噺榪涜璋冭瘯錛屼絾鏄笉鑳藉瀹忓父閲忚繘琛岃皟璇曘?
____浠庝互涓婄殑姒傚康渚夸篃鑳藉熀鏈竻妤氾紝typedef鍙槸涓轟簡澧炲姞鍙鎬ц屼負(fù)鏍囪瘑絎﹀彟璧風(fēng)殑鏂板悕縐?浠呬粎鍙槸涓埆鍚?錛岃?define鍘熸湰鍦–涓槸涓轟簡瀹氫箟甯擱噺錛屽埌浜咰++錛宑onst銆乪num銆乮nline鐨勫嚭鐜頒嬌瀹冧篃娓愭笎鎴愪負(fù)浜嗚搗鍒悕鐨勫伐鍏楓傛湁鏃跺緢瀹規(guī)槗鎼炰笉娓呮涓巘ypedef涓よ呭埌搴曡鐢ㄥ摢涓ソ錛屽#define INT int榪欐牱鐨勮鍙ワ紝鐢╰ypedef涓鏍峰彲浠ュ畬鎴愶紝鐢ㄥ摢涓ソ鍛紵鎴戜富寮犵敤typedef錛屽洜涓哄湪鏃╂湡鐨勮澶欳緙栬瘧鍣ㄤ腑榪欐潯璇彞鏄潪娉曠殑錛屽彧鏄幇浠婄殑緙栬瘧鍣ㄥ張鍋氫簡鎵╁厖銆備負(fù)浜嗗敖鍙兘鍦板吋瀹癸紝涓鑸兘閬靛驚#define瀹氫箟鈥滃彲璇燴濈殑甯擱噺浠ュ強(qiáng)涓浜涘畯璇彞鐨勪換鍔★紝鑰宼ypedef鍒欏父鐢ㄦ潵瀹氫箟鍏抽敭瀛椼佸啑闀跨殑綾誨瀷鐨勫埆鍚嶃?