Sql Server中用Print命令轻松调试【存储过程】的技巧或经验!
经常为存储过程的调试犯愁,通过不断的调试,终于找到一个简单的方法:
1、在存储过程中,用【print】输出,来判断错误问题点。
2、关键是这一步,执行存储过程时,一定要用
EXEC [info] -- 直接运行存储过程,不要用return参数那种运行。
Sql Server中用Print命令轻松调试【存储过程】的技巧或经验!经常为存储过程的调试犯愁,通过不断的调试,终于找到一个简单的方法:1、在存储过程中,用【print】输出,来判断错误问题点。2、关键是这一步,执行存储过程时,一定要用EXEC [info] -- 直接运行存储过程,不要用return参数那种运行。
资源名称:
SQL
_
Server
存储过程
调试
指南内容简介:
存储过程
( Stored
Pr
ocedure)是一组为了完成特定功能的
SQL
语句集,经编译后
存储
在数据库中。用户通过指定
存储过程
的名字并给出参数(如果该
存储过程
带有参数)来执行它。 有时人们将
存储过程
称为“数据库中埋头苦干的老黄牛”,它是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到
存储过程
。 但是无论编写
资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3×5×6×7,其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。
输入格式:
输入在一行中给出一个正整数 N(1<N<231)。
输出格式:
首先在第 1 行输出最长连续因子的个数;然后在第 2 行中按 因子1因子2……*因子k 的格式输出最小的连续因子序列,其中因子按递增顺序输出,1 不算在内。
输入样例:
输出样例:
今天突然有同事问起,如何在
sql
server
中
调试
存储过程
(我们公司使用的是
sql
server
2008 R2),猛地一看,和以前使用
sql
server
2000真的有很大的不同,我真晕了。
于是琢磨了一下。
SQL
SERVER
2005中不知因何去掉了很重要的DEBUGGER功能,要
调试
,必须要安装VS2005专业版或者更高版本。非常不方便。
还好,
SQL
SERVER
2008中这个很重要而且方便的功能又回来了。
不过,
SQL
SERVER
2008的
调试
功能和
SQL
2000的方法差别很大。
SQL
2000是在查询分析器中的对象浏览器中选中需要
调试
的
存储过程
,右键—-
调试
—输入参数开始
调试
。
sql
从
SQL
Server
2005开始,引入了varchar(max) / nvarchar(max) 数据类型,表中可不使用LOB数据类型而突破单列8000 / 4000字符的限制,动态
SQL
也可以拼接得更长;但查看这类字符的时候,在某些地方,字符长度的限制仍然存在,比如:
单列:SSMS里返回的列值
动态
SQL
:
pr
int
命令
打印字符时
一、 SSMS里返回的列值长度限制
在SSMS的工具-选项(Tools-Options)里可设置每列最多显示的字符数,默认为上限65535个字符,如图:
SQL
SERVER
中使用
pr
int
如何一起输出数值和字符串
declare @course_name Varchar(30),@cnt
int
,@avg_score
int
exec
pr
oCourseAvg 'C语言',@cnt output,@avg_score output
pr
int
@cnt
pr
int
@avg_score
不得不说的小废话 :
在如上的示例中的功能是输出由课程的名字找出选课的人数和选修这个课程学生的平均分,cnt就是表示选课人数,avg_score就是表示学生的
sql
raiserror
This article explores the
SQL
Server
PR
INT
statements, and its alternative
SQL
Server
RAISEERROR statements to
pr
int
messages in a query.
本文探讨了
SQL
Server
PR
INT
语句及其替代
SQL
Serve...
SQL
不支持转义符,可在字符串中加入char(10)或者char(13)使语句换行,nchar(10)和nchar(13)也是可以的.eg
[code="
sql
"]
pr
int
'再见'+char(13)+'byebye'[/code]
[quote]再见
byebye[/quote]...
我使用的是Microsoft
SQL
Server
Management Studio,在
调试
的时候,
pr
int
结果不全
今天
调试
一个
存储过程
,由于语句太长,导致控制台无法打印完全,查阅资料,没有发现有调整设置的,于是巧取:
将其输出为xml
SELECT '你的
sql
' FOR XML PATH('名字')
-- 执行
SELECT @selectStr + @f...
Definition --
存储过程
内容
FROM sys.
sql
_modules AS m
INNER JOIN sys.all_objects AS o ON m.object_id = o.object_id
WHERE o.[type] = 'P'
如果仅查看名字的话,可以简略一点:
select name from sysobjects where xtype='p'
declare @name varchar(10),@age
int
–赋值,set一次只能给一个变量赋值,select是没有要求的,一次可以赋多个值
set @name = ‘张三’
set @age = 18
select @name = ‘张三’, @age = 19
pr
int
@name
pr
int
@age
–局部变量的赋值和输出,需要全部选择
–声明两个变量
declare @name varchar(10),@age
int
–赋值,se
FROM user_source
WHERE NAME = ‘
Pr
ocedure Name’
ORDER BY line;–其中
Pr
ocedure Name为
存储过程
名字,需要全部用大写英文。
2、如要查P_TEST的
存储过程
:
SELECT text
FROM user_source
WHERE NAME = ‘P_TEST’
ORDER BY line;
3、内容如下: