璇硶
CREATE PROC [ EDURE ] procedure_name [ ; number ]
聽(tīng)聽(tīng)聽(tīng) [ { @parameter data_type }
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) [ VARYING ] [ = default ] [ OUTPUT ]
聽(tīng)聽(tīng)聽(tīng) ] [ ,...n ]
[ WITH
聽(tīng)聽(tīng)聽(tīng) { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]
[ FOR REPLICATION ]
AS sql_statement [ ...n ]
鍙傛暟
procedure_name
聽(tīng)聽(tīng)聽(tīng) 鏂板瓨鍌ㄨ繃紼嬬殑鍚嶇О銆傝繃紼嬪悕蹇呴』絎﹀悎鏍囪瘑絎﹁鍒欙紝涓斿浜庢暟鎹簱鍙?qiáng)鍏舵墍鏈夎呭繀欏誨敮涓銆傛湁鍏蟲(chóng)洿澶氫俊鎭紝璇峰弬瑙佷嬌鐢ㄦ爣璇嗙銆?br />聽(tīng)聽(tīng)聽(tīng) 瑕佸垱寤哄眬閮ㄤ復(fù)鏃惰繃紼嬶紝鍙互鍦?procedure_name 鍓嶉潰鍔犱竴涓紪鍙風(fēng) (#procedure_name)錛岃鍒涘緩鍏ㄥ眬涓存椂榪囩▼錛屽彲浠ュ湪 procedure_name 鍓嶉潰鍔犱袱涓紪鍙風(fēng) (##procedure_name)銆傚畬鏁寸殑鍚嶇О錛堝寘鎷?# 鎴?##錛変笉鑳借秴榪?128 涓瓧絎︺傛寚瀹氳繃紼嬫墍鏈夎呯殑鍚嶇О鏄彲閫夌殑銆?br />
;number
聽(tīng)聽(tīng)聽(tīng) 鏄彲閫夌殑鏁存暟錛岀敤鏉ュ鍚屽悕鐨勮繃紼嬪垎緇勶紝浠ヤ究鐢ㄤ竴鏉?DROP PROCEDURE 璇彞鍗沖彲灝嗗悓緇勭殑榪囩▼涓璧烽櫎鍘匯備緥濡傦紝鍚嶄負(fù) orders 鐨勫簲鐢ㄧ▼搴忎嬌鐢ㄧ殑榪囩▼鍙互鍛藉悕涓?orderproc;1銆乷rderproc;2 絳夈侱ROP PROCEDURE orderproc 璇彞灝嗛櫎鍘繪暣涓粍銆傚鏋滃悕縐頒腑鍖呭惈瀹氱晫鏍囪瘑絎︼紝鍒欐暟瀛椾笉搴斿寘鍚湪鏍囪瘑絎︿腑錛屽彧搴斿湪 procedure_name 鍓嶅悗浣跨敤閫傚綋鐨勫畾鐣岀銆?/p>
@parameter
榪囩▼涓殑鍙傛暟銆傚湪 CREATE PROCEDURE 璇彞涓彲浠ュ0鏄庝竴涓垨澶氫釜鍙傛暟銆傜敤鎴峰繀欏誨湪鎵ц榪囩▼鏃舵彁渚涙瘡涓墍澹版槑鍙傛暟鐨勫鹼紙闄ら潪瀹氫箟浜?jiǎn)璇ュ弬鏁扮殑榛樿鍊鹼級(jí)銆傚瓨鍌ㄨ繃紼嬫渶澶氬彲浠ユ湁 2.100 涓弬鏁般?/p>
浣跨敤 @ 絎﹀彿浣滀負(fù)絎竴涓瓧絎︽潵鎸囧畾鍙傛暟鍚嶇О銆傚弬鏁板悕縐板繀欏葷鍚堟爣璇嗙鐨勮鍒欍傛瘡涓繃紼嬬殑鍙傛暟浠呯敤浜庤榪囩▼鏈韓錛涚浉鍚岀殑鍙傛暟鍚嶇О鍙互鐢ㄥ湪鍏跺畠榪囩▼涓傞粯璁ゆ儏鍐典笅錛屽弬鏁板彧鑳戒唬鏇垮父閲忥紝鑰屼笉鑳界敤浜庝唬鏇胯〃鍚嶃佸垪鍚嶆垨鍏跺畠鏁版嵁搴撳璞$殑鍚嶇О銆傛湁鍏蟲(chóng)洿澶氫俊鎭紝璇峰弬瑙?EXECUTE銆?
data_type
鍙傛暟鐨勬暟鎹被鍨嬨傛墍鏈夋暟鎹被鍨嬶紙鍖呮嫭 text銆乶text 鍜?image錛夊潎鍙互鐢ㄤ綔瀛樺偍榪囩▼鐨勫弬鏁般備笉榪囷紝cursor 鏁版嵁綾誨瀷鍙兘鐢ㄤ簬 OUTPUT 鍙傛暟銆傚鏋滄寚瀹氱殑鏁版嵁綾誨瀷涓?cursor錛屼篃蹇呴』鍚屾椂鎸囧畾 VARYING 鍜?OUTPUT 鍏抽敭瀛椼傛湁鍏?SQL Server 鎻愪緵鐨勬暟鎹被鍨嬪強(qiáng)鍏惰娉曠殑鏇村淇℃伅錛岃鍙傝鏁版嵁綾誨瀷銆?
璇存槑聽(tīng) 瀵逛簬鍙互鏄?cursor 鏁版嵁綾誨瀷鐨勮緭鍑哄弬鏁幫紝娌℃湁鏈澶ф暟鐩殑闄愬埗銆?/p>
VARYING
鎸囧畾浣滀負(fù)杈撳嚭鍙傛暟鏀寔鐨勭粨鏋滈泦錛堢敱瀛樺偍榪囩▼鍔ㄦ佹瀯閫狅紝鍐呭鍙互鍙樺寲錛夈備粎閫傜敤浜庢父鏍囧弬鏁般?/p>
default
鍙傛暟鐨勯粯璁ゅ箋傚鏋滃畾涔変簡(jiǎn)榛樿鍊鹼紝涓嶅繀鎸囧畾璇ュ弬鏁扮殑鍊煎嵆鍙墽琛岃繃紼嬨傞粯璁ゅ煎繀欏繪槸甯擱噺鎴?NULL銆傚鏋滆繃紼嬪皢瀵硅鍙傛暟浣跨敤 LIKE 鍏抽敭瀛楋紝閭d箞榛樿鍊間腑鍙互鍖呭惈閫氶厤絎︼紙%銆乢銆乕] 鍜?[^]錛夈?/p>
OUTPUT
琛ㄦ槑鍙傛暟鏄繑鍥炲弬鏁般傝閫夐」鐨勫煎彲浠ヨ繑鍥炵粰 EXEC[UTE]銆備嬌鐢?OUTPUT 鍙傛暟鍙皢淇℃伅榪斿洖緇欒皟鐢ㄨ繃紼嬨俆ext銆乶text 鍜?image 鍙傛暟鍙敤浣?OUTPUT 鍙傛暟銆備嬌鐢?OUTPUT 鍏抽敭瀛楃殑杈撳嚭鍙傛暟鍙互鏄父鏍囧崰浣嶇銆?/p>
n
琛ㄧず鏈澶氬彲浠ユ寚瀹?2.100 涓弬鏁扮殑鍗犱綅絎︺?/p>
{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}
RECOMPILE 琛ㄦ槑 SQL Server 涓嶄細(xì)緙撳瓨璇ヨ繃紼嬬殑璁″垝錛岃榪囩▼灝嗗湪榪愯鏃墮噸鏂扮紪璇戙傚湪浣跨敤闈炲吀鍨嬪兼垨涓存椂鍊艱屼笉甯屾湜瑕嗙洊緙撳瓨鍦ㄥ唴瀛樹(shù)腑鐨勬墽琛岃鍒掓椂錛岃浣跨敤 RECOMPILE 閫夐」銆?/p>
ENCRYPTION 琛ㄧず SQL Server 鍔犲瘑 syscomments 琛ㄤ腑鍖呭惈 CREATE PROCEDURE 璇彞鏂囨湰鐨勬潯鐩備嬌鐢?ENCRYPTION 鍙槻姝㈠皢榪囩▼浣滀負(fù) SQL Server 澶嶅埗鐨勪竴閮ㄥ垎鍙戝竷銆?/p>
璇存槑聽(tīng) 鍦ㄥ崌綰ц繃紼嬩腑錛孲QL Server 鍒╃敤瀛樺偍鍦?syscomments 涓殑鍔犲瘑娉ㄩ噴鏉ラ噸鏂板垱寤哄姞瀵嗚繃紼嬨?/p>
FOR REPLICATION
鎸囧畾涓嶈兘鍦ㄨ闃呮湇鍔″櫒涓婃墽琛屼負(fù)澶嶅埗鍒涘緩鐨勫瓨鍌ㄨ繃紼嬨?浣跨敤 FOR REPLICATION 閫夐」鍒涘緩鐨勫瓨鍌ㄨ繃紼嬪彲鐢ㄤ綔瀛樺偍榪囩▼絳涢夛紝涓斿彧鑳藉湪澶嶅埗榪囩▼涓墽琛屻傛湰閫夐」涓嶈兘鍜?WITH RECOMPILE 閫夐」涓璧蜂嬌鐢ㄣ?/p>
AS
鎸囧畾榪囩▼瑕佹墽琛岀殑鎿嶄綔銆?/p>
sql_statement
榪囩▼涓鍖呭惈鐨勪換鎰忔暟鐩拰綾誨瀷鐨?Transact-SQL 璇彞銆備絾鏈変竴浜涢檺鍒躲?/p>
n
鏄〃紺烘榪囩▼鍙互鍖呭惈澶氭潯 Transact-SQL 璇彞鐨勫崰浣嶇銆?/p>
娉ㄩ噴
瀛樺偍榪囩▼鐨勬渶澶уぇ灝忎負(fù) 128 MB銆?/p>
鐢ㄦ埛瀹氫箟鐨勫瓨鍌ㄨ繃紼嬪彧鑳藉湪褰撳墠鏁版嵁搴撲腑鍒涘緩錛堜復(fù)鏃惰繃紼嬮櫎澶栵紝涓存椂榪囩▼鎬繪槸鍦?tempdb 涓垱寤猴級(jí)銆傚湪鍗曚釜鎵瑰鐞嗕腑錛孋REATE PROCEDURE 璇彞涓嶈兘涓庡叾瀹?Transact-SQL 璇彞緇勫悎浣跨敤銆?
榛樿鎯呭喌涓嬶紝鍙傛暟鍙負(fù)絀恒傚鏋滀紶閫?NULL 鍙傛暟鍊煎茍涓旇鍙傛暟鍦?CREATE 鎴?ALTER TABLE 璇彞涓嬌鐢紝鑰岃璇彞涓紩鐢ㄧ殑鍒楀張涓嶅厑璁鎬嬌鐢?NULL錛屽垯 SQL Server 浼?xì)漶旂敓涓鏉¢敊璇俊鎭備負(fù)浜?jiǎn)闃叉鍚戜笉鍏佽嬌鐢?NULL 鐨勫垪浼犻?NULL 鍙傛暟鍊鹼紝搴斿悜榪囩▼涓坊鍔犵紪紼嬮昏緫鎴栦負(fù)璇ュ垪浣跨敤榛樿鍊鹼紙浣跨敤 CREATE 鎴?ALTER TABLE 鐨?DEFAULT 鍏抽敭瀛?銆?/p>
寤鴻鍦ㄥ瓨鍌ㄨ繃紼嬬殑浠諱綍 CREATE TABLE 鎴?ALTER TABLE 璇彞涓兘涓烘瘡鍒楁樉寮忔寚瀹?NULL 鎴?NOT NULL錛屼緥濡傚湪鍒涘緩涓存椂琛ㄦ椂銆侫NSI_DFLT_ON 鍜?ANSI_DFLT_OFF 閫夐」鎺у埗 SQL Server 涓哄垪鎸囨淳 NULL 鎴?NOT NULL 鐗規(guī)х殑鏂瑰紡錛堝鏋滃湪 CREATE TABLE 鎴?ALTER TABLE 璇彞涓病鏈夋寚瀹氱殑璇濓級(jí)銆傚鏋滄煇涓繛鎺ユ墽琛岀殑瀛樺偍榪囩▼瀵硅繖浜涢夐」鐨勮緗笌鍒涘緩璇ヨ繃紼嬬殑榪炴帴鐨勮緗笉鍚岋紝鍒欎負(fù)絎簩涓繛鎺ュ垱寤虹殑琛ㄥ垪鍙兘浼?xì)鏈変笉鍚岀殑湄?fù)絀烘э紝騫朵笖琛ㄧ幇鍑轟笉鍚岀殑琛屼負(fù)鏂瑰紡銆傚鏋滀負(fù)姣忎釜鍒楁樉寮忓0鏄庝簡(jiǎn) NULL 鎴?NOT NULL錛岄偅涔堝皢瀵規(guī)墍鏈夋墽琛岃瀛樺偍榪囩▼鐨勮繛鎺ヤ嬌鐢ㄧ浉鍚岀殑涓虹┖鎬у垱寤轟復(fù)鏃惰〃銆?/p>
鍦ㄥ垱寤烘垨鏇存敼瀛樺偍榪囩▼鏃訛紝SQL Server 灝嗕繚瀛?SET QUOTED_IDENTIFIER 鍜?SET ANSI_NULLS 鐨勮緗傛墽琛屽瓨鍌ㄨ繃紼嬫椂錛屽皢浣跨敤榪欎簺鍘熷璁劇疆銆傚洜姝わ紝鎵鏈夊鎴風(fēng)浼?xì)璇濈?SET QUOTED_IDENTIFIER 鍜?SET ANSI_NULLS 璁劇疆鍦ㄦ墽琛屽瓨鍌ㄨ繃紼嬫椂閮藉皢琚拷鐣ャ傚湪瀛樺偍榪囩▼涓嚭鐜扮殑 SET QUOTED_IDENTIFIER 鍜?SET ANSI_NULLS 璇彞涓嶅獎(jiǎng)鍝嶅瓨鍌ㄨ繃紼嬬殑鍔熻兘銆?/p>
鍏跺畠 SET 閫夐」錛堜緥濡?SET ARITHABORT銆丼ET ANSI_WARNINGS 鎴?SET ANSI_PADDINGS錛夊湪鍒涘緩鎴栨洿鏀瑰瓨鍌ㄨ繃紼嬫椂涓嶄繚瀛樸傚鏋滃瓨鍌ㄨ繃紼嬬殑閫昏緫鍙栧喅浜庣壒瀹氱殑璁劇疆錛屽簲鍦ㄨ繃紼嬪紑澶存坊鍔犱竴鏉?SET 璇彞錛屼互紜繚璁劇疆姝g‘銆備粠瀛樺偍榪囩▼涓墽琛?SET 璇彞鏃訛紝璇ヨ緗彧鍦ㄥ瓨鍌ㄨ繃紼嬪畬鎴愪箣鍓嶆湁鏁堛備箣鍚庯紝璁劇疆灝嗘仮澶嶄負(fù)璋冪敤瀛樺偍榪囩▼鏃剁殑鍊箋傝繖浣夸釜鍒殑瀹㈡埛绔彲浠ヨ緗墍闇鐨勯夐」錛岃屼笉浼?xì)濯?jiǎng)鍝嶅瓨鍌ㄨ繃紼嬬殑閫昏緫銆?/p>
璇存槑聽(tīng) SQL Server 鏄皢絀哄瓧絎︿覆瑙i噴涓哄崟涓┖鏍艱繕鏄В閲婁負(fù)鐪熸鐨勭┖瀛楃涓詫紝鐢卞吋瀹圭駭鍒緗帶鍒躲傚鏋滃吋瀹圭駭鍒皬浜庢垨絳変簬 65錛孲QL Server 灝卞皢絀哄瓧絎︿覆瑙i噴涓哄崟涓┖鏍箋傚鏋滃吋瀹圭駭鍒瓑浜?70錛屽垯 SQL Server 灝嗙┖瀛楃涓茶В閲婁負(fù)絀哄瓧絎︿覆銆傛湁鍏蟲(chóng)洿澶氫俊鎭紝璇峰弬瑙?sp_dbcmptlevel銆?
鑾峰緱鏈夊叧瀛樺偍榪囩▼鐨勪俊鎭?br />鑻ヨ鏄劇ず鐢ㄦ潵鍒涘緩榪囩▼鐨勬枃鏈紝璇峰湪榪囩▼鎵鍦ㄧ殑鏁版嵁搴撲腑鎵ц sp_helptext錛屽茍浣跨敤榪囩▼鍚嶄綔涓哄弬鏁般?
璇存槑聽(tīng) 浣跨敤 ENCRYPTION 閫夐」鍒涘緩鐨勫瓨鍌ㄨ繃紼嬩笉鑳戒嬌鐢?sp_helptext 鏌ョ湅銆?/p>
鑻ヨ鏄劇ず鏈夊叧榪囩▼寮曠敤鐨勫璞$殑鎶ヨ〃錛岃浣跨敤 sp_depends銆?
鑻ヨ涓鴻繃紼嬮噸鍛藉悕錛岃浣跨敤 sp_rename銆?
寮曠敤瀵硅薄
SQL Server 鍏佽鍒涘緩鐨勫瓨鍌ㄨ繃紼嬪紩鐢ㄥ皻涓嶅瓨鍦ㄧ殑瀵硅薄銆傚湪鍒涘緩鏃訛紝鍙繘琛岃娉曟鏌ャ傛墽琛屾椂錛屽鏋滈珮閫熺紦瀛樹(shù)腑灝氭棤鏈夋晥鐨勮鍒掞紝鍒欑紪璇戝瓨鍌ㄨ繃紼嬩互鐢熸垚鎵ц璁″垝銆傚彧鏈夊湪緙栬瘧榪囩▼涓墠瑙f瀽瀛樺偍榪囩▼涓紩鐢ㄧ殑鎵鏈夊璞°傚洜姝わ紝濡傛灉璇硶姝g‘鐨勫瓨鍌ㄨ繃紼嬪紩鐢ㄤ簡(jiǎn)涓嶅瓨鍦ㄧ殑瀵硅薄錛屽垯浠嶅彲浠ユ垚鍔熷垱寤猴紝浣嗗湪榪愯鏃跺皢澶辮觸錛屽洜涓烘墍寮曠敤鐨勫璞′笉瀛樺湪銆傛湁鍏蟲(chóng)洿澶氫俊鎭紝璇峰弬瑙佸歡榪熷悕縐拌В鏋愬拰緙栬瘧銆?
寤惰繜鍚嶇О瑙f瀽鍜屽吋瀹圭駭鍒?br />SQL Server 鍏佽 Transact-SQL 瀛樺偍榪囩▼鍦ㄥ垱寤烘椂寮曠敤涓嶅瓨鍦ㄧ殑琛ㄣ傝繖縐嶈兘鍔涚О涓哄歡榪熷悕縐拌В鏋愩備笉榪囷紝濡傛灉 Transact-SQL 瀛樺偍榪囩▼寮曠敤浜?jiǎn)璇ュ瓨鍌q囩▼涓畾涔夌殑琛紝鑰屽吋瀹圭駭鍒緗紙閫氳繃鎵ц sp_dbcmptlevel 鏉ヨ緗級(jí)涓?65錛屽垯鍦ㄥ垱寤烘椂浼?xì)鍙戝國(guó)櫗﹀憡淇℃伅銆傝屽鏋滃湪榪愯鏃舵墍寮曠敤鐨勮〃涓嶅瓨鍦紝灝嗚繑鍥為敊璇俊鎭傛湁鍏蟲(chóng)洿澶氫俊鎭紝璇峰弬瑙?sp_dbcmptlevel 鍜屽歡榪熷悕縐拌В鏋愬拰緙栬瘧銆?
鎵ц瀛樺偍榪囩▼
鎴愬姛鎵ц CREATE PROCEDURE 璇彞鍚庯紝榪囩▼鍚嶇О灝嗗瓨鍌ㄥ湪 sysobjects 緋葷粺琛ㄤ腑錛岃?CREATE PROCEDURE 璇彞鐨勬枃鏈皢瀛樺偍鍦?syscomments 涓傜涓嬈℃墽琛屾椂錛屽皢緙栬瘧璇ヨ繃紼嬩互紜畾媯(gè)绱㈡暟鎹殑鏈浣寵闂鍒掋?/p>
浣跨敤 cursor 鏁版嵁綾誨瀷鐨勫弬鏁?br />瀛樺偍榪囩▼鍙兘灝?cursor 鏁版嵁綾誨瀷鐢ㄤ簬 OUTPUT 鍙傛暟銆傚鏋滀負(fù)鏌愪釜鍙傛暟鎸囧畾浜?cursor 鏁版嵁綾誨瀷錛屼篃蹇呴』鎸囧畾 VARYING 鍜?OUTPUT 鍙傛暟銆傚鏋滀負(fù)鏌愪釜鍙傛暟鎸囧畾浜?VARYING 鍏抽敭瀛楋紝鍒欐暟鎹被鍨嬪繀欏繪槸 cursor錛屽茍涓斿繀欏繪寚瀹?OUTPUT 鍏抽敭瀛椼?/p>
璇存槑聽(tīng) cursor 鏁版嵁綾誨瀷涓嶈兘閫氳繃鏁版嵁搴?API錛堜緥濡?OLE DB銆丱DBC銆丄DO 鍜?DB-Library錛夌粦瀹氬埌搴旂敤紼嬪簭鍙橀噺涓娿傚洜涓哄繀欏誨厛緇戝畾 OUTPUT 鍙傛暟錛屽簲鐢ㄧ▼搴忔墠鍙互鎵ц瀛樺偍榪囩▼錛屾墍浠ュ甫鏈?cursor OUTPUT 鍙傛暟鐨勫瓨鍌ㄨ繃紼嬩笉鑳介氳繃鏁版嵁搴?API 璋冪敤銆傚彧鏈夊皢 cursor OUTPUT 鍙橀噺璧嬪肩粰 Transact-SQL 灞閮?cursor 鍙橀噺鏃訛紝鎵嶅彲浠ラ氳繃 Transact-SQL 鎵瑰鐞嗐佸瓨鍌ㄨ繃紼嬫垨瑙﹀彂鍣ㄨ皟鐢ㄨ繖浜涜繃紼嬨?/p>
Cursor 杈撳嚭鍙傛暟
鍦ㄦ墽琛岃繃紼嬫椂錛屼互涓嬭鍒欓傜敤浜?cursor 杈撳嚭鍙傛暟錛?
瀵逛簬鍙繘娓告爣錛屾父鏍囩殑緇撴灉闆嗕腑榪斿洖鐨勮鍙槸閭d簺瀛樺偍榪囩▼鎵ц緇撴潫鏃跺浜庢垨瓚呭嚭娓告爣浣嶇疆鐨勮錛屼緥濡傦細(xì)
鍦ㄨ繃紼嬩腑鐨勫悕涓?RS 鐨?100 琛岀粨鏋滈泦涓婃墦寮涓涓潪婊氬姩娓告爣銆?
榪囩▼鎻愬彇緇撴灉闆?RS 鐨勫ご 5 琛屻?/p>
榪囩▼榪斿洖鍒板叾璋冪敤鑰呫?/p>
榪斿洖鍒拌皟鐢ㄨ呯殑緇撴灉闆?RS 鐢?RS 鐨勭 6 鍒?100 琛岀粍鎴愶紝璋冪敤鑰呬腑鐨勬父鏍囧浜?RS 鐨勭涓琛屼箣鍓嶃?
瀵逛簬鍙繘娓告爣錛屽鏋滃瓨鍌ㄨ繃紼嬪畬鎴愬悗錛屾父鏍囦綅浜庣涓琛岀殑鍓嶉潰錛屽垯鏁翠釜緇撴灉闆嗗皢榪斿洖緇欒皟鐢ㄦ壒澶勭悊銆佸瓨鍌ㄨ繃紼嬫垨瑙﹀彂鍣ㄣ傝繑鍥炴椂錛屾父鏍囧皢浣嶄簬絎竴琛岀殑鍓嶉潰銆?/p>
瀵逛簬鍙繘娓告爣錛屽鏋滃瓨鍌ㄨ繃紼嬪畬鎴愬悗錛屾父鏍囩殑浣嶇疆瓚呭嚭鏈鍚庝竴琛岀殑緇撳熬錛屽垯涓鴻皟鐢ㄦ壒澶勭悊銆佸瓨鍌ㄨ繃紼嬫垨瑙﹀彂鍣ㄨ繑鍥炵┖緇撴灉闆嗐?
璇存槑聽(tīng) 絀虹粨鏋滈泦涓庣┖鍊間笉鍚屻?/p>
瀵逛簬鍙粴鍔ㄦ父鏍囷紝鍦ㄥ瓨鍌ㄨ繃紼嬫墽琛岀粨鏉熸椂錛岀粨鏋滈泦涓殑鎵鏈夎鍧囦細(xì)榪斿洖緇欒皟鐢ㄦ壒澶勭悊銆佸瓨鍌ㄨ繃紼嬫垨瑙﹀彂鍣ㄣ傝繑鍥炴椂錛屾父鏍囦繚鐣欏湪榪囩▼涓渶鍚庝竴嬈℃墽琛屾彁鍙栨椂鐨勪綅緗?/p>
瀵逛簬浠繪剰綾誨瀷鐨勬父鏍囷紝濡傛灉娓告爣鍏抽棴錛屽垯灝嗙┖鍊間紶閫掑洖璋冪敤鎵瑰鐞嗐佸瓨鍌ㄨ繃紼嬫垨瑙﹀彂鍣ㄣ傚鏋滃皢娓告爣鎸囨淳緇欎竴涓弬鏁幫紝浣嗚娓告爣浠庢湭鎵撳紑榪囷紝涔熶細(xì)鍑虹幇榪欑鎯呭喌銆?
璇存槑聽(tīng) 鍏抽棴鐘舵佸彧鏈夊湪榪斿洖鏃舵墠鏈夊獎(jiǎng)鍝嶃備緥濡傦紝鍙互鍦ㄨ繃紼嬩腑鍏抽棴娓告爣錛岀◢鍚庡啀鎵撳紑娓告爣錛岀劧鍚庡皢璇ユ父鏍囩殑緇撴灉闆嗚繑鍥炵粰璋冪敤鎵瑰鐞嗐佸瓨鍌ㄨ繃紼嬫垨瑙﹀彂鍣ㄣ?/p>
涓存椂瀛樺偍榪囩▼
SQL Server 鏀寔涓ょ涓存椂榪囩▼錛氬眬閮ㄤ復(fù)鏃惰繃紼嬪拰鍏ㄥ眬涓存椂榪囩▼銆傚眬閮ㄤ復(fù)鏃惰繃紼嬪彧鑳界敱鍒涘緩璇ヨ繃紼嬬殑榪炴帴浣跨敤銆傚叏灞涓存椂榪囩▼鍒欏彲鐢辨墍鏈夎繛鎺ヤ嬌鐢ㄣ傚眬閮ㄤ復(fù)鏃惰繃紼嬪湪褰撳墠浼?xì)璇澗l撴潫鏃惰嚜鍔ㄩ櫎鍘匯傚叏灞涓存椂榪囩▼鍦ㄤ嬌鐢ㄨ榪囩▼鐨勬渶鍚庝竴涓細(xì)璇濈粨鏉熸椂闄ゅ幓銆傞氬父鏄湪鍒涘緩璇ヨ繃紼嬬殑浼?xì)璇澗l撴潫鏃躲?/p>
涓存椂榪囩▼鐢?# 鍜?## 鍛藉悕錛屽彲浠ョ敱浠諱綍鐢ㄦ埛鍒涘緩銆傚垱寤鴻繃紼嬪悗錛屽眬閮ㄨ繃紼嬬殑鎵鏈夎呮槸鍞竴鍙互浣跨敤璇ヨ繃紼嬬殑鐢ㄦ埛銆傛墽琛屽眬閮ㄤ復(fù)鏃惰繃紼嬬殑鏉冮檺涓嶈兘鎺堜簣鍏朵粬鐢ㄦ埛銆傚鏋滃垱寤轟簡(jiǎn)鍏ㄥ眬涓存椂榪囩▼錛屽垯鎵鏈夌敤鎴峰潎鍙互璁塊棶璇ヨ繃紼嬶紝鏉冮檺涓嶈兘鏄懼紡搴熼櫎銆傚彧鏈夊湪 tempdb 鏁版嵁搴撲腑鍏鋒湁鏄懼紡 CREATE PROCEDURE 鏉冮檺鐨勭敤鎴鳳紝鎵嶅彲浠ュ湪璇ユ暟鎹簱涓樉寮忓垱寤轟復(fù)鏃惰繃紼嬶紙涓嶄嬌鐢ㄧ紪鍙風(fēng)鍛藉悕錛夈傚彲浠ユ巿浜堟垨搴熼櫎榪欎簺榪囩▼涓殑鏉冮檺銆?
璇存槑聽(tīng) 棰戠箒浣跨敤涓存椂瀛樺偍榪囩▼浼?xì)鍦?tempdb 涓殑緋葷粺琛ㄤ笂浜х敓浜夌敤錛屼粠鑰屽鎬ц兘浜х敓璐熼潰褰卞搷銆傚緩璁嬌鐢?sp_executesql 浠f浛銆俿p_executesql 涓嶅湪緋葷粺琛ㄤ腑瀛樺偍鏁版嵁錛屽洜姝ゅ彲浠ラ伩鍏嶈繖涓闂銆?/p>
鑷姩鎵ц瀛樺偍榪囩▼
SQL Server 鍚姩鏃跺彲浠ヨ嚜鍔ㄦ墽琛屼竴涓垨澶氫釜瀛樺偍榪囩▼銆傝繖浜涘瓨鍌ㄨ繃紼嬪繀欏葷敱緋葷粺綆$悊鍛樺垱寤猴紝騫跺湪 sysadmin 鍥哄畾鏈嶅姟鍣ㄨ鑹蹭笅浣滀負(fù)鍚庡彴榪囩▼鎵ц銆傝繖浜涜繃紼嬩笉鑳芥湁浠諱綍杈撳叆鍙傛暟銆?
瀵瑰惎鍔ㄨ繃紼嬬殑鏁扮洰娌℃湁闄愬埗錛屼絾鏄娉ㄦ剰錛屾瘡涓惎鍔ㄨ繃紼嬪湪鎵ц鏃墮兘浼?xì)鍗犵敤涓涓繛鎺ャ傚鏋滃繀欏誨湪鍚姩鏃舵墽琛屽涓繃紼嬶紝浣嗕笉闇瑕佸茍琛屾墽琛岋紝鍒欏彲浠ユ寚瀹氫竴涓繃紼嬩綔涓哄惎鍔ㄨ繃紼嬶紝璁╄榪囩▼璋冪敤鍏跺畠榪囩▼銆傝繖鏍峰氨鍙崰鐢ㄤ竴涓繛鎺ャ?/p>
鍦ㄥ惎鍔ㄦ椂鎭㈠浜?jiǎn)鏈鍚庝竴涓暟鎹簱鍚庯紝鍗沖紑濮嬫墽琛屽瓨鍌ㄨ繃紼嬨傝嫢瑕佽煩榪囪繖浜涘瓨鍌ㄨ繃紼嬬殑鎵ц錛岃灝嗗惎鍔ㄥ弬鏁版寚瀹氫負(fù)璺熻釜鏍囪 4022銆傚鏋滀互鏈浣庨厤緗惎鍔?SQL Server錛堜嬌鐢?-f 鏍囪錛夛紝鍒欏惎鍔ㄥ瓨鍌ㄨ繃紼嬩篃涓嶄細(xì)鎵ц銆傛湁鍏蟲(chóng)洿澶氫俊鎭紝璇峰弬瑙佽窡韙爣璁般?
鑻ヨ鍒涘緩鍚姩瀛樺偍榪囩▼錛屽繀欏諱綔涓?sysadmin 鍥哄畾鏈嶅姟鍣ㄨ鑹茬殑鎴愬憳鐧誨綍錛屽茍鍦?master 鏁版嵁搴撲腑鍒涘緩瀛樺偍榪囩▼銆?/p>
浣跨敤 sp_procoption 鍙互錛?
灝嗙幇鏈夊瓨鍌ㄨ繃紼嬫寚瀹氫負(fù)鍚姩榪囩▼銆?/p>
鍋滄鍦?SQL Server 鍚姩鏃舵墽琛岃繃紼嬨?/p>
鏌ョ湅 SQL Server 鍚姩鏃舵墽琛岀殑鎵鏈夎繃紼嬬殑鍒楄〃銆?
瀛樺偍榪囩▼宓屽
瀛樺偍榪囩▼鍙互宓屽錛屽嵆涓涓瓨鍌ㄨ繃紼嬪彲浠ヨ皟鐢ㄥ彟涓涓瓨鍌ㄨ繃紼嬨傚湪琚皟鐢ㄨ繃紼嬪紑濮嬫墽琛屾椂錛屽祵濂楃駭灝嗗鍔狅紝鍦ㄨ璋冪敤榪囩▼鎵ц緇撴潫鍚庯紝宓屽綰у皢鍑忓皯銆傚鏋滆秴鍑烘渶澶х殑宓屽綰э紝浼?xì)鋴涉暣涓皟鐢q囩▼閾懼け璐ャ傚彲鐢?@@NESTLEVEL 鍑芥暟榪斿洖褰撳墠鐨勫祵濂楃駭銆?/p>
鑻ヨ浼拌緙栬瘧鍚庣殑瀛樺偍榪囩▼澶у皬錛岃浣跨敤涓嬪垪鎬ц兘鐩戣璁℃暟鍣ㄣ?
鎬ц兘鐩戣鍣ㄥ璞″悕 鎬ц兘鐩戣璁℃暟鍣ㄥ悕縐?
SQLServer錛氱紦鍐插尯綆$悊鍣?楂橀熺紦瀛樺ぇ灝忥紙欏甸潰鏁幫級(jí)
SQLServer錛氶珮閫熺紦瀛樼鐞嗗櫒 楂橀熺紦瀛樺懡涓巼
聽(tīng) 楂橀熺紦瀛橀〉
聽(tīng) 楂橀熺紦瀛樺璞¤鏁?
* 鍚勭鍒嗙被鐨勯珮閫熺紦瀛樺璞″潎鍙互浣跨敤榪欎簺璁℃暟鍣紝鍖呮嫭鐗規(guī)畩 sql銆佸噯澶?sql銆佽繃紼嬨佽Е鍙戝櫒絳夈?/p>
鏈夊叧鏇村淇℃伅錛岃鍙傝 SQL Server:Buffer Manager 瀵硅薄鍜?SQL Server:Cache Manager 瀵硅薄銆?
sql_statement 闄愬埗
闄や簡(jiǎn) SET SHOWPLAN_TEXT 鍜?SET SHOWPLAN_ALL 涔嬪錛堣繖涓や釜璇彞蹇呴』鏄壒澶勭悊涓粎鏈夌殑璇彞錛夛紝浠諱綍 SET 璇彞鍧囧彲浠ュ湪瀛樺偍榪囩▼鍐呴儴鎸囧畾銆傛墍閫夋嫨鐨?SET 閫夐」鍦ㄥ瓨鍌ㄨ繃紼嬫墽琛岃繃紼嬩腑鏈夋晥錛屼箣鍚庢仮澶嶄負(fù)鍘熸潵鐨勮緗?
濡傛灉鍏朵粬鐢ㄦ埛瑕佷嬌鐢ㄦ煇涓瓨鍌ㄨ繃紼嬶紝閭d箞鍦ㄨ瀛樺偍榪囩▼鍐呴儴錛屼竴浜涜鍙ヤ嬌鐢ㄧ殑瀵硅薄鍚嶅繀欏諱嬌鐢ㄥ璞℃墍鏈夎呯殑鍚嶇О闄愬畾銆傝繖浜涜鍙ュ寘鎷細(xì)
ALTER TABLE
CREATE INDEX
CREATE TABLE
鎵鏈?DBCC 璇彞
DROP TABLE
DROP INDEX
TRUNCATE TABLE
UPDATE STATISTICS
鏉冮檺
CREATE PROCEDURE 鐨勬潈闄愰粯璁ゆ巿浜?sysadmin 鍥哄畾鏈嶅姟鍣ㄨ鑹叉垚鍛樺拰 db_owner 鍜?db_ddladmin 鍥哄畾鏁版嵁搴撹鑹叉垚鍛樸俿ysadmin 鍥哄畾鏈嶅姟鍣ㄨ鑹叉垚鍛樺拰 db_owner 鍥哄畾鏁版嵁搴撹鑹叉垚鍛樺彲浠ュ皢 CREATE PROCEDURE 鏉冮檺杞緇欏叾浠栫敤鎴楓傛墽琛屽瓨鍌ㄨ繃紼嬬殑鏉冮檺鎺堜簣榪囩▼鐨勬墍鏈夎咃紝璇ユ墍鏈夎呭彲浠ヤ負(fù)鍏跺畠鏁版嵁搴撶敤鎴瘋緗墽琛屾潈闄愩?/p>
紺轟緥
A. 浣跨敤甯︽湁澶嶆潅 SELECT 璇彞鐨勭畝鍗曡繃紼?br />涓嬮潰鐨勫瓨鍌ㄨ繃紼嬩粠鍥涗釜琛ㄧ殑鑱旀帴涓繑鍥炴墍鏈変綔鑰咃紙鎻愪緵浜?jiǎn)濮撳悕锛?jí)銆佸嚭鐗堢殑涔︾睄浠ュ強(qiáng)鍑虹増紺俱傝瀛樺偍榪囩▼涓嶄嬌鐢ㄤ換浣曞弬鏁般?/p>
USE pubs
IF EXISTS (SELECT name FROM sysobjects
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) WHERE name = 'au_info_all' AND type = 'P')
聽(tīng)聽(tīng) DROP PROCEDURE au_info_all
GO
CREATE PROCEDURE au_info_all
AS
SELECT au_lname, au_fname, title, pub_name
聽(tīng)聽(tīng) FROM authors a INNER JOIN titleauthor ta
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) ON a.au_id = ta.au_id INNER JOIN titles t
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) ON t.title_id = ta.title_id INNER JOIN publishers p
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) ON t.pub_id = p.pub_id
GO
au_info_all 瀛樺偍榪囩▼鍙互閫氳繃浠ヤ笅鏂規(guī)硶鎵ц錛?/p>
EXECUTE au_info_all
-- Or
EXEC au_info_all
濡傛灉璇ヨ繃紼嬫槸鎵瑰鐞嗕腑鐨勭涓鏉¤鍙ワ紝鍒欏彲浣跨敤錛?/p>
au_info_all
B. 浣跨敤甯︽湁鍙傛暟鐨勭畝鍗曡繃紼?br />涓嬮潰鐨勫瓨鍌ㄨ繃紼嬩粠鍥涗釜琛ㄧ殑鑱旀帴涓彧榪斿洖鎸囧畾鐨勪綔鑰咃紙鎻愪緵浜?jiǎn)濮撳悕锛?jí)銆佸嚭鐗堢殑涔︾睄浠ュ強(qiáng)鍑虹増紺俱傝瀛樺偍榪囩▼鎺ュ彈涓庝紶閫掔殑鍙傛暟綺劇‘鍖歸厤鐨勫箋?/p>
USE pubs
IF EXISTS (SELECT name FROM sysobjects
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) WHERE name = 'au_info' AND type = 'P')
聽(tīng)聽(tīng) DROP PROCEDURE au_info
GO
USE pubs
GO
CREATE PROCEDURE au_info
聽(tīng)聽(tīng) @lastname varchar(40),
聽(tīng)聽(tīng) @firstname varchar(20)
AS
SELECT au_lname, au_fname, title, pub_name
聽(tīng)聽(tīng) FROM authors a INNER JOIN titleauthor ta
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) ON a.au_id = ta.au_id INNER JOIN titles t
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) ON t.title_id = ta.title_id INNER JOIN publishers p
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) ON t.pub_id = p.pub_id
聽(tīng)聽(tīng) WHERE聽(tīng) au_fname = @firstname
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) AND au_lname = @lastname
GO
au_info 瀛樺偍榪囩▼鍙互閫氳繃浠ヤ笅鏂規(guī)硶鎵ц錛?/p>
EXECUTE au_info 'Dull', 'Ann'
-- Or
EXECUTE au_info @lastname = 'Dull', @firstname = 'Ann'
-- Or
EXECUTE au_info @firstname = 'Ann', @lastname = 'Dull'
-- Or
EXEC au_info 'Dull', 'Ann'
-- Or
EXEC au_info @lastname = 'Dull', @firstname = 'Ann'
-- Or
EXEC au_info @firstname = 'Ann', @lastname = 'Dull'
濡傛灉璇ヨ繃紼嬫槸鎵瑰鐞嗕腑鐨勭涓鏉¤鍙ワ紝鍒欏彲浣跨敤錛?/p>
au_info 'Dull', 'Ann'
-- Or
au_info @lastname = 'Dull', @firstname = 'Ann'
-- Or
au_info @firstname = 'Ann', @lastname = 'Dull'
C. 浣跨敤甯︽湁閫氶厤絎﹀弬鏁扮殑綆鍗曡繃紼?br />涓嬮潰鐨勫瓨鍌ㄨ繃紼嬩粠鍥涗釜琛ㄧ殑鑱旀帴涓彧榪斿洖鎸囧畾鐨勪綔鑰咃紙鎻愪緵浜?jiǎn)濮撳悕锛?jí)銆佸嚭鐗堢殑涔︾睄浠ュ強(qiáng)鍑虹増紺俱傝瀛樺偍榪囩▼瀵逛紶閫掔殑鍙傛暟榪涜妯″紡鍖歸厤錛屽鏋滄病鏈夋彁渚涘弬鏁幫紝鍒欎嬌鐢ㄩ璁劇殑榛樿鍊箋?/p>
USE pubs
IF EXISTS (SELECT name FROM sysobjects
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) WHERE name = 'au_info2' AND type = 'P')
聽(tīng)聽(tīng) DROP PROCEDURE au_info2
GO
USE pubs
GO
CREATE PROCEDURE au_info2
聽(tīng)聽(tīng) @lastname varchar(30) = 'D%',
聽(tīng)聽(tīng) @firstname varchar(18) = '%'
AS
SELECT au_lname, au_fname, title, pub_name
FROM authors a INNER JOIN titleauthor ta
聽(tīng)聽(tīng) ON a.au_id = ta.au_id INNER JOIN titles t
聽(tīng)聽(tīng) ON t.title_id = ta.title_id INNER JOIN publishers p
聽(tīng)聽(tīng) ON t.pub_id = p.pub_id
WHERE au_fname LIKE @firstname
聽(tīng)聽(tīng) AND au_lname LIKE @lastname
GO
au_info2 瀛樺偍榪囩▼鍙互鐢ㄥ縐嶇粍鍚堟墽琛屻備笅闈㈠彧鍒楀嚭浜?jiǎn)閮ㄥ垎缁勫悎锛?xì)
EXECUTE au_info2
-- Or
EXECUTE au_info2 'Wh%'
-- Or
EXECUTE au_info2 @firstname = 'A%'
-- Or
EXECUTE au_info2 '[CK]ars[OE]n'
-- Or
EXECUTE au_info2 'Hunter', 'Sheryl'
-- Or
EXECUTE au_info2 'H%', 'S%'
D. 浣跨敤 OUTPUT 鍙傛暟
OUTPUT 鍙傛暟鍏佽澶栭儴榪囩▼銆佹壒澶勭悊鎴栧鏉?Transact-SQL 璇彞璁塊棶鍦ㄨ繃紼嬫墽琛屾湡闂磋緗殑鏌愪釜鍊箋備笅闈㈢殑紺轟緥鍒涘緩涓涓瓨鍌ㄨ繃紼?(titles_sum)錛屽茍浣跨敤涓涓彲閫夌殑杈撳叆鍙傛暟鍜屼竴涓緭鍑哄弬鏁般?/p>
棣栧厛錛屽垱寤鴻繃紼嬶細(xì)
USE pubs
GO
IF EXISTS(SELECT name FROM sysobjects
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) WHERE name = 'titles_sum' AND type = 'P')
聽(tīng)聽(tīng) DROP PROCEDURE titles_sum
GO
USE pubs
GO
CREATE PROCEDURE titles_sum @@TITLE varchar(40) = '%', @@SUM money OUTPUT
AS
SELECT 'Title Name' = title
FROM titles
WHERE title LIKE @@TITLE
SELECT @@SUM = SUM(price)
FROM titles
WHERE title LIKE @@TITLE
GO
鎺ヤ笅鏉ワ紝灝嗚 OUTPUT 鍙傛暟鐢ㄤ簬鎺у埗嫻佽璦銆?
璇存槑聽(tīng) OUTPUT 鍙橀噺蹇呴』鍦ㄥ垱寤鴻〃鍜屼嬌鐢ㄨ鍙橀噺鏃墮兘榪涜瀹氫箟銆?/p>
鍙傛暟鍚嶅拰鍙橀噺鍚嶄笉涓瀹氳鍖歸厤錛屼笉榪囨暟鎹被鍨嬪拰鍙傛暟浣嶇疆蹇呴』鍖歸厤錛堥櫎闈炰嬌鐢?@@SUM = variable 褰㈠紡錛夈?
DECLARE @@TOTALCOST money
EXECUTE titles_sum 'The%', @@TOTALCOST OUTPUT
IF @@TOTALCOST < 200
BEGIN
聽(tīng)聽(tīng) PRINT ' '
聽(tīng)聽(tīng) PRINT 'All of these titles can be purchased for less than $200.'
END
ELSE
聽(tīng)聽(tīng) SELECT 'The total cost of these titles is $'
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) + RTRIM(CAST(@@TOTALCOST AS varchar(20)))
涓嬮潰鏄粨鏋滈泦錛?/p>
Title Name聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
------------------------------------------------------------------------
The Busy Executive's Database Guide
The Gourmet Microwave
The Psychology of Computer Cooking
(3 row(s) affected)
Warning, null value eliminated from aggregate.
聽(tīng)
All of these titles can be purchased for less than $200.
E. 浣跨敤 OUTPUT 娓告爣鍙傛暟
OUTPUT 娓告爣鍙傛暟鐢ㄦ潵灝嗗瓨鍌ㄨ繃紼嬬殑灞閮ㄦ父鏍囦紶閫掑洖璋冪敤鎵瑰鐞嗐佸瓨鍌ㄨ繃紼嬫垨瑙﹀彂鍣ㄣ?/p>
棣栧厛錛屽垱寤轟互涓嬭繃紼嬶紝鍦?titles 琛ㄤ笂澹版槑騫舵墦寮涓涓父鏍囷細(xì)
USE pubs
IF EXISTS (SELECT name FROM sysobjects
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) WHERE name = 'titles_cursor' and type = 'P')
DROP PROCEDURE titles_cursor
GO
CREATE PROCEDURE titles_cursor @titles_cursor CURSOR VARYING OUTPUT
AS
SET @titles_cursor = CURSOR
FORWARD_ONLY STATIC FOR
SELECT *
FROM titles
OPEN @titles_cursor
GO
鎺ヤ笅鏉ワ紝鎵ц涓涓壒澶勭悊錛屽0鏄庝竴涓眬閮ㄦ父鏍囧彉閲忥紝鎵ц涓婅堪榪囩▼浠ュ皢娓告爣璧嬪肩粰灞閮ㄥ彉閲忥紝鐒跺悗浠庤娓告爣鎻愬彇琛屻?/p>
USE pubs
GO
DECLARE @MyCursor CURSOR
EXEC titles_cursor @titles_cursor = @MyCursor OUTPUT
WHILE (@@FETCH_STATUS = 0)
BEGIN
聽(tīng)聽(tīng) FETCH NEXT FROM @MyCursor
END
CLOSE @MyCursor
DEALLOCATE @MyCursor
GO
F. 浣跨敤 WITH RECOMPILE 閫夐」
濡傛灉涓鴻繃紼嬫彁渚涚殑鍙傛暟涓嶆槸鍏稿瀷鐨勫弬鏁幫紝騫朵笖鏂扮殑鎵ц璁″垝涓嶅簲楂橀熺紦瀛樻垨瀛樺偍鍦ㄥ唴瀛樹(shù)腑錛學(xué)ITH RECOMPILE 瀛愬彞浼?xì)寰堟湁甯姪銆?/p>
USE pubs
IF EXISTS (SELECT name FROM sysobjects
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) WHERE name = 'titles_by_author' AND type = 'P')
聽(tīng)聽(tīng) DROP PROCEDURE titles_by_author
GO
CREATE PROCEDURE titles_by_author @@LNAME_PATTERN varchar(30) = '%'
WITH RECOMPILE
AS
SELECT RTRIM(au_fname) + ' ' + RTRIM(au_lname) AS 'Authors full name',
聽(tīng)聽(tīng) title AS Title
FROM authors a INNER JOIN titleauthor ta
聽(tīng)聽(tīng) ON a.au_id = ta.au_id INNER JOIN titles t
聽(tīng)聽(tīng) ON ta.title_id = t.title_id
WHERE au_lname LIKE @@LNAME_PATTERN
GO
G. 浣跨敤 WITH ENCRYPTION 閫夐」
WITH ENCRYPTION 瀛愬彞瀵圭敤鎴烽殣钘忓瓨鍌ㄨ繃紼嬬殑鏂囨湰銆備笅渚嬪垱寤哄姞瀵嗚繃紼嬶紝浣跨敤 sp_helptext 緋葷粺瀛樺偍榪囩▼鑾峰彇鍏充簬鍔犲瘑榪囩▼鐨勪俊鎭紝鐒跺悗灝濊瘯鐩存帴浠?syscomments 琛ㄤ腑鑾峰彇鍏充簬璇ヨ繃紼嬬殑淇℃伅銆?/p>
IF EXISTS (SELECT name FROM sysobjects
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) WHERE name = 'encrypt_this' AND type = 'P')
聽(tīng)聽(tīng) DROP PROCEDURE encrypt_this
GO
USE pubs
GO
CREATE PROCEDURE encrypt_this
WITH ENCRYPTION
AS
SELECT *
FROM authors
GO
EXEC sp_helptext encrypt_this
涓嬮潰鏄粨鏋滈泦錛?/p>
The object's comments have been encrypted.
鎺ヤ笅鏉ワ紝閫夋嫨鍔犲瘑瀛樺偍榪囩▼鍐呭鐨勬爣璇嗗彿鍜屾枃鏈?/p>
SELECT c.id, c.text
FROM syscomments c INNER JOIN sysobjects o
聽(tīng)聽(tīng) ON c.id = o.id
WHERE o.name = 'encrypt_this'
涓嬮潰鏄粨鏋滈泦錛?/p>
璇存槑聽(tīng) text 鍒楃殑杈撳嚭鏄劇ず鍦ㄥ崟鐙竴琛屼腑銆傛墽琛屾椂錛岃淇℃伅灝嗕笌 id 鍒椾俊鎭嚭鐜板湪鍚屼竴琛屼腑銆?/p>
id聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) text聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
---------- ------------------------------------------------------------
1413580074 ?????????????????????????????????e??????????????????????????????????????????????????????????????????????????
(1 row(s) affected)
H. 鍒涘緩鐢ㄦ埛瀹氫箟鐨勭郴緇熷瓨鍌ㄨ繃紼?br />涓嬮潰鐨勭ず渚嬪垱寤轟竴涓繃紼嬶紝鏄劇ず琛ㄥ悕浠?emp 寮澶寸殑鎵鏈夎〃鍙?qiáng)鍏跺搴旂殑鐑?chǔ)寮曘傚鏋滄病鏈夋寚瀹氬弬鏁幫紝璇ヨ繃紼嬪皢榪斿洖琛ㄥ悕浠?sys 寮澶寸殑鎵鏈夎〃錛堝強(qiáng)绱㈠紩錛夈?/p>
IF EXISTS (SELECT name FROM sysobjects
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) WHERE name = 'sp_showindexes' AND type = 'P')
聽(tīng)聽(tīng) DROP PROCEDURE sp_showindexes
GO
USE master
GO
CREATE PROCEDURE sp_showindexes
聽(tīng)聽(tīng) @@TABLE varchar(30) = 'sys%'
AS
SELECT o.name AS TABLE_NAME,
聽(tīng)聽(tīng) i.name AS INDEX_NAME,
聽(tīng)聽(tīng) indid AS INDEX_ID
FROM sysindexes i INNER JOIN sysobjects o
聽(tīng)聽(tīng) ON o.id = i.id
WHERE o.name LIKE @@TABLE
GO聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
USE pubs
EXEC sp_showindexes 'emp%'
GO
涓嬮潰鏄粨鏋滈泦錛?/p>
TABLE_NAME聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) INDEX_NAME聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) INDEX_ID
---------------- ---------------- ----------------
employee聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) employee_ind聽(tīng)聽(tīng)聽(tīng)聽(tīng) 1
employee聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) PK_emp_id聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) 2
(2 row(s) affected)
I. 浣跨敤寤惰繜鍚嶇О瑙f瀽
涓嬮潰鐨勭ず渚嬫樉紺哄洓涓繃紼嬩互鍙?qiáng)鍤g榪熷悕縐拌В鏋愮殑鍚勭鍙兘浣跨敤鏂瑰紡銆傚敖綆″紩鐢ㄧ殑琛ㄦ垨鍒楀湪緙栬瘧鏃朵笉瀛樺湪錛屼絾姣忎釜瀛樺偍榪囩▼閮藉彲鍒涘緩銆?/p>
IF EXISTS (SELECT name FROM sysobjects
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) WHERE name = 'proc1' AND type = 'P')
聽(tīng)聽(tīng) DROP PROCEDURE proc1
GO
-- Creating a procedure on a nonexistent table.
USE pubs
GO
CREATE PROCEDURE proc1
AS
聽(tīng)聽(tīng) SELECT *
聽(tīng)聽(tīng) FROM does_not_exist
GO聽(tīng)
-- Here is the statement to actually see the text of the procedure.
SELECT o.id, c.text
FROM sysobjects o INNER JOIN syscomments c
聽(tīng)聽(tīng) ON o.id = c.id
WHERE o.type = 'P' AND o.name = 'proc1'
GO
USE master
GO
IF EXISTS (SELECT name FROM sysobjects
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng) WHERE name = 'proc2' AND type = 'P')
聽(tīng)聽(tīng) DROP PROCEDURE proc2
GO
-- Creating a procedure that attempts to retrieve information from a
-- nonexistent column in an existing table.
USE pubs
GO
CREATE PROCEDURE proc2
AS
聽(tīng)聽(tīng) DECLARE @middle_init char(1)
聽(tīng)聽(tīng) SET @middle_init = NULL
聽(tīng)聽(tīng) SELECT au_id, middle_initial = @middle_init
聽(tīng)聽(tīng) FROM authors
GO聽(tīng)
-- Here is the statement to actually see the text of the procedure.
SELECT o.id, c.text
FROM sysobjects o INNER JOIN syscomments c
聽(tīng)聽(tīng) ON o.id = c.id
WHERE o.type = 'P' and o.name = 'proc2'