久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

SQL中print、sp

共計(jì) 2087 個(gè)字符,預(yù)計(jì)需要花費(fèi) 6 分鐘才能閱讀完成。

本篇文章給大家分享的是有關(guān) SQL 中 print、sp_helptext 的限制與擴(kuò)展是怎樣的,丸趣 TV 小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著丸趣 TV 小編一起來看看吧。

在 SQL 中,使用動(dòng)態(tài) SQL 是很常見的。有些復(fù)雜的計(jì)算,或是存儲(chǔ)過程,代碼很長(zhǎng),中間可能有多次執(zhí)行 SQL 語(yǔ)句。而調(diào)試拼串的 SQL 語(yǔ)句卻是件痛苦的事,很難看出來運(yùn)行的語(yǔ)句是什么。所以我會(huì)經(jīng)常使用 print 這個(gè)命令把運(yùn)行前的語(yǔ)句打印到屏幕上,然后復(fù)制出來到另一個(gè)窗口進(jìn)行調(diào)試、修改,這樣就比較方便了。但是這個(gè) print 命令有一些限制, 在單字節(jié)符集下,最大只能打印打印 8000 個(gè)字符的長(zhǎng)度,而在雙字節(jié)字符集是 4000 個(gè)。

以下存儲(chǔ)過程可以打印完整的信息,不受長(zhǎng)度的限制。代碼如下:

IF OBJECT_ID(N sp_print_all) IS NOT NULLBEGINDROP PROCEDURE sp_print_allENDGOCREATE PROCEDURE sp_print_all (@dynamic_sql NVARCHAR(MAX))ASDECLARE @start INTDECLARE @len INTSET @start = 1SET @len = 4000WHILE (@start   LEN(@dynamic_sql))BEGINPRINT SUBSTRING(@dynamic_sql, @start, @len)SET @start = @start + @lenENDPRINT SUBSTRING(@dynamic_sql, @start, @len)GO

code-1

還有一個(gè)存儲(chǔ) sp_helptext,可以查詢存儲(chǔ)過程,函數(shù)等代碼,使用起來也比較方便,但也有長(zhǎng)度的限制,而且打印出來的格式跟源代碼的格式有些對(duì)應(yīng)不上。寫了一個(gè)自定義存儲(chǔ)過程來代替,代碼如下:

IF OBJECT_ID(N sp_helptext_user) IS NOT NULLBEGINDROP PROCEDURE sp_helptext_userENDGOCREATE PROCEDURE sp_helptext_user(@obj_name NVARCHAR(200) =  )ASSET NOCOUNT ON;DECLARE @text NVARCHAR(MAX),@i INT,@text2 NVARCHAR(MAX),@db_name SYSNAME,@obj_id BIGINTSET @db_name = PARSENAME(@obj_name ,3)IF @db_name IS NULLSET @db_name = DB_NAME()ELSE IF @db_name   DB_NAME()BEGINRAISERROR(15250 ,-1 ,-1)RETURN (1)ENDSET @obj_id = OBJECT_ID(@obj_name)IF @obj_id IS NULLBEGINRAISERROR(15009 ,-1 ,-1 ,@obj_name ,@db_name)RETURN (1)ENDSELECT @text = [definition]FROM sys.all_sql_modulesWHERE [object_id] = @obj_idWHILE LEN(@text)   2000BEGINSET @i = CHARINDEX(CHAR(13) ,@text ,2000) SET @text2 = LEFT(@text ,@i)SET @text = SUBSTRING(@text ,@i + 2 ,LEN(@text)) PRINT @text2ENDPRINT @textSET NOCOUNT OFF;GO

code-2

當(dāng)然,查看源代碼有多種方法,可以在 SSMS 上操作等,看個(gè)人習(xí)慣或方便操作了。

詳解 sp_helptext

顯示規(guī)則、默認(rèn)值、未加密的存儲(chǔ)過程、用戶定義函數(shù)、觸發(fā)器或視圖的文本。

語(yǔ)法

sp_helptext [@objname =] name

參數(shù)

[@objname =] name

對(duì)象的名稱,將顯示該對(duì)象的定義信息。對(duì)象必須在當(dāng)前數(shù)據(jù)庫(kù)中。name 的數(shù)據(jù)類型為 nvarchar(776),沒有默認(rèn)值。

返回代碼值

0(成功)或 1(失敗)

注釋

sp_helptext 在多個(gè)行中顯示用來創(chuàng)建對(duì)象的文本,其中每行有 Transact-SQL 定義的 255 個(gè)字符。這些定義只駐留在當(dāng)前數(shù)據(jù)庫(kù)的 syscomments 表的文本中。

權(quán)限

執(zhí)行權(quán)限默認(rèn)授予 public 角色。

示例

下面的示例顯示 employee_insupd 觸發(fā)器的文本,該觸發(fā)器在數(shù)據(jù)庫(kù) pubs 中。

USE pubsEXEC sp_helptext  employee_insupd

以上就是 SQL 中 print、sp_helptext 的限制與擴(kuò)展是怎樣的,丸趣 TV 小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注丸趣 TV 行業(yè)資訊頻道。

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-18發(fā)表,共計(jì)2087字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒有評(píng)論)
主站蜘蛛池模板: 金秀| 白山市| 万全县| 贵港市| 含山县| 监利县| 常宁市| 色达县| 凤山县| 临湘市| 白玉县| 清水河县| 宁波市| 宿迁市| 金昌市| 温州市| 德钦县| 博罗县| 司法| 沐川县| 珲春市| 白河县| 黄梅县| 玉龙| 无锡市| 苍梧县| 丁青县| 莫力| 裕民县| 和政县| 湘西| 遂宁市| 商洛市| 河池市| 都昌县| 临江市| 玉门市| 南丹县| 五寨县| 文昌市| 昆山市|