麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

SQL中print、sp_helptext的限制與擴(kuò)展

2024-08-31 01:03:40
字體:
供稿:網(wǎng)友
這篇文章主要介紹了print、sp_helptext的限制與擴(kuò)展 的相關(guān)資料,需要的朋友可以參考下
 

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

以下存儲過程可以打印完整的信息,不受長度的限制。代碼如下:

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

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

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上操作等,看個人習(xí)慣或方便操作了。

詳解sp_helptext

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

語法

sp_helptext [ @objname = ] 'name'

參數(shù)

[@objname =] 'name'

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

返回代碼值

0(成功)或 1(失敗)

注釋

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

權(quán)限

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

示例

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

USE pubsEXEC sp_helptext 'employee_insupd'
 


注:相關(guān)教程知識閱讀請移步到MSSQL教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美激情精品久久久久久久久久 | 久国久产久精永久网页 | 欧美精品99 | 青青草最新网址 | 亚洲天堂在线电影 | 污片视频在线观看 | 成人福利软件 | 双性精h调教灌尿打屁股的文案 | 国产精品爆操 | 国产午夜网 | 欧美日韩1区2区3区 黄片毛片一级 | 成人三级在线播放 | 黄在线观看 | 黄色高清免费 | 一级大片一级一大片 | 激情五月少妇a | 黄色大片www | 一级免费特黄视频 | 18欧美性xxxx极品hd | 国产午夜精品久久久久久免费视 | 欧美一级做a| 亚洲成人免费网站 | 2019天天干夜夜操 | 一区二区三区手机在线观看 | 欧美一区二区精品夜夜嗨 | 欧美一级淫片免费视频黄 | 欧美国产第一页 | 亚洲乱妇19p| 亚洲一级片在线观看 | 欧美18—19sex性护士中国 | 国产羞羞视频免费在线观看 | jj视频在线播放 | 羞羞色院91精品网站 | 欧美综合成人 | 黄色片网站在线播放 | 最新av在线免费观看 | 成品片a免费直接观看 | 国内精品久久久久久久久久 | 久久久久北条麻妃免费看 | 日韩视频中文 | 亚洲国产精久久久久久久 |