相信,大家对sp_helptext存储过程一定不陌生,它可以帮你快速获取存储过程等对象的定义。但它有一个致命的缺点就是:每行最多返回255个nvarchar类型的字符,假如有一个编写不规范的存储过程,它的某些行超出了255,则取出的定义内容,很可能出错。其实,对象的定义都已经完整地存储在它所在数据库的sys.sql_modules视图中(兼容性视图为:sys.syscomments),下面介绍一个小方法来解决这个问题:
USE tempdb
GO --创建测试存储过程
CREATE PROC dbo. Demo1
@Length INT
AS
SET NOCOUNT ON
IF(@Length > 0 )
PRINT '>0'
ELSE
PRINT '<=0' GO --获取存储过程定义
DECLARE @ObjectName NVARCHAR( 50)
SET @ObjectName = N'Demo1' SELECT ObjectDefinition =b. name FROM
(SELECT Content=CONVERT (XML, '<root><v><![CDATA[' + REPLACE(OBJECT_DEFINITION (OBJECT_ID( @ObjectName)), CHAR(13 )+CHAR( 10), ']]></v><v><![CDATA[' ) + ']]></v></root>')) a
OUTER APPLY
(SELECT [name] = C. v.value ('.', 'NVARCHAR(MAX)') FROM a.Content .nodes( '/root/v') C(v )) b --直接拷贝结果
/* --创建测试存储过程
CREATE PROC dbo.Demo1
@Length INT
AS
SET NOCOUNT ON
IF(@Length > 0)
PRINT '>0'
ELSE
PRINT '<=0' */
     
  小结
  #1. 突破了每行255个字符的限制。每行字符长度无限制,输出总内容长度无限制。
  #2. 可以直接从表格结果集中粘贴出结果,而不用再切换到文本显示选项(Ctrl+T)或用PRINT函数打印到输出窗口(PRINT函数输出的最大长度为8000)
  #3. 果断定义成快捷键,放到SQL Prompt的Snippet Manager中
  #4. 看了下sp_helptext的定义了解到:#1.系统对象的object_id为负整数,用户对象的object_id为正整数 #2.syscomments视图text列类型为nvarchar(4000),也就是说,假设一个存储过程的内容长度为4001个字符,那么它将分2行存储在syscomments中 #3.sp_helptext输出结果以换行+回车(char(13)+char(10))为拆分输出行,如果输出行的长度大于255,则按每行最大255个字符再次拆分。

sp_helptext输出错行问题解决的更多相关文章

  1. Delphi如何找到出错行的行数!!

    Delphi之通过崩溃地址找出源代码的出错行 一 什么是MAP文件 什么是 MAP 文件?简单地讲, MAP 文件是程序的全局符号.源文件和代码行号信息的唯一的文本表示方法,它可以在任何地方.任何时候 ...

  2. 在服务器上运行db:seed数据填充时,出错的问题解决

    在服务器上运行db:seed数据填充时,出错的问题解决 运行composer  dump-autoload

  3. 在springboot pom文件配置过程,`spring-boot-maven-plugin`配置出错的问题解决及配置过程出现问题的一些思考

    在springboot pom文件配置过程,spring-boot-maven-plugin配置出错的问题解决及配置过程出现问题的一些思考 解决方法一: 也是最简单的方法,可能是maven没有来得及导 ...

  4. MFC程序打开文件对话框出错的问题解决

    前几天从网上下了个图像分析的mfc小程序,是VC6的 用VC6在本地编译生成都没问题.执行起来弹出一个未处理的错误,程序崩溃退出. 想起来原来遇到过打开文件对话框方面的问题,当时项目时间紧张未能深究. ...

  5. scanf与gets函数混用 前后位置出错的问题解决

    scanf与gets函数混用 利用scanf函数从键盘接收一字符(或整数)时,它只读入字符(或整数)本身,而把字符(或整数)后的回车符留在输入缓冲区内:gets函数从标准的输入读取,如果使用gets函 ...

  6. ffmpeg在Win7 VS2010中debug通过,release出错的问题解决方法

    我所用的系统环境是Win7 32位操作系统+VS2010编译环境.所以在debug模式下调通之后,在Release模式下调试不通过,最后通过上网查资料和自己对比两个编译选项得出以下结论: 修改“项目- ...

  7. vim切换显示器乱行问题解决

    http://note.youdao.com/noteshare?id=ccdad950ca154a6b1597cbe2ede07b81

  8. python 里安装 tensorflow 后运行出错的问题解决

    如果出现一下错误: libcublas.so.8.0: cannot open shared object file: No such file or directory 原因是没有 cuda 环境, ...

  9. hive分区与实际分区文件不匹配导致spark读文件出错的问题解决

    先解释下,由于历史原因导致hive中的看到分区比hdfs中的文件夹不匹配,存在hive中分区数有,实际hdfs中无此文件夹. spark中通过sparkSQL读取hive中的该表时,将会出现异常. 解 ...

随机推荐

  1. 如何清除svn的账号缓存信息(solaris)

    如果我们不小心输入svn账号错误的话,后面就一直提示认证失败,不能checkout代码. 这个是因为svn把你输入的账号进行了缓存. 如果我们想重新输入新的账号,必须要清除缓存 svn存储账号的目录在 ...

  2. 如何设置tomcat,直接通过IP 访问

    找到tomcat的主目录,进入conf文件夹,找到server.xml文件,并打开:   修改tomcat的监听端口为80端口: 在server.xml文件中找到: <Connector por ...

  3. 服务器意外重启导致storm报错的问题处理

    解决方法 cat /opt/storm-0.8.2/conf/storm.yaml中找到storm.local.dir设定的目录,备份supervisor和workers两个文件夹,#nohup su ...

  4. ios的xxxAppDelegate.h分析

    #import "BIDAppDelegate.h" #import "BIDViewController.h" @implementation BIDAppD ...

  5. Lenovo SplitScreen联想分屏软件只能在联想电脑运行,如何破解

    1.正常安装软件,重启电脑. 2.打开安装目录 C:\Program Files\Lenovo\Lenovo SplitScreen\SplitScreen 找到 MachineChecker.dll ...

  6. Apache Hive (一)Hive初识

    转自:https://www.cnblogs.com/qingyunzong/p/8707885.html Hive 简介 什么是Hive 1.Hive 由 Facebook 实现并开源 2.是基于 ...

  7. centos6.5 源码安装 mysql

    1.下载源码包 我的版本:mysql-5.6.4-m7.tar.gz 2.安装之前先卸载CentOS自带的MySQL [root@localhost ~]# yum remove mysql 3.编译 ...

  8. java程序员应该熟悉的20个有用的库(转)

    优秀且经验丰富的Java开发人员的一个特点是API的广泛知识,包括JDK和第三方库.我花了很多时间学习API,特别是在阅读Effective Java 3rd Edition之后,Joshua Blo ...

  9. NSArray 快速求和、平均值、最大值、最小值

    在iOS开发中我们经常遇到一个需求,求一个数组的所有元素的和,最大值,最小值或者平均值,有的开发者可能第一想到的是for循环遍历求解,其实苹果提供了更简便的方式.如下: NSArray *arr = ...

  10. 对图片进行X,Y轴的翻转,黑白色转变

    做完了修改图片的程序.用的Winfrom做的.昨天基本完成,记录一下使用的东西. 首先是将需要加载的图片放入picturebox控件,这里用到了openfiledialog 打开文件对话框 strin ...