用SET命令捕获多行错误

象单行一样,解决多行的T-SQL返回的结果是一个好习惯。在T-SQL里使用局部变量得到返回的结果记录集,如果用SELECT子句就会掩饰潜在的问题。

 
如果代码只希望得到一个值,SELECT子句只会分配一个值,尽管实际上可能返回多个值。如果这种分配用SET 命令会发生错误。但是,当你希望得到单个值的记录时,用SET命令会使T-SQL代码更加鲁棒。

下面的脚本演示了这种情况:

CREATE TABLE SetTest
(Pkey INT NOT NULL
 CONSTRAINT pk_SetTest primary key,
Name  VARCHAR(30) NOT NULL
 CONSTRAINT df_col1 DEFAULT 1
)
GO
INSERT SetTest VALUES (1,'Mary Johnson')
INSERT SetTest VALUES (2,'John Highland')
INSERT SetTest VALUES (3,'Ashly Robertson')
INSERT SetTest VALUES (4,'Mary Johnson')
GO
DECLARE @myVar INT
SELECT @myVar = Pkey FROM SetTest WHERE Name = 'Mary Johnson'
GO
DECLARE @myVar INT  -- ERROR WILL BE GENERATED
SET @myVar = ( SELECT Pkey FROM SetTest WHERE Name = 'Mary Johnson' )
GO
DROP TABLE SetTest
GO

时间: 2024-10-03 09:32:19

用SET命令捕获多行错误的相关文章

gbk-执行 gradlew install 命令时,报 错误: 编码 GBK的不可映射字符

问题描述 执行 gradlew install 命令时,报 错误: 编码 GBK的不可映射字符 android studio2.0 在做自己的library,想上传到仓库,看的教程http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0623/3097.html 前面都没问题,唯独执行gradlew install 这个命令时报错了. 1.在android studio里面看的,文件都是utf-8格式的文件. 2.查了很多类似问题,

PHP捕获Fatal error错误的方法

这篇文章主要介绍了PHP捕获Fatal error错误的方法,使用register_shutdown_function来捕获Fatal error错误,需要的朋友可以参考下   Fatal error 一般是不需要捕获的, 但是在一个复杂的程序中, 如果偶然出现内存不足导致fatal error就难以处理了. 比如. fatal error 出在MySQL类中fetch的时候. 这个时候就很难定位到真正问题所在了. PHP异常处理中 可以通过set_error_handler来捕获. 但是却只能

关于使用 file() 读入整个文件时出现的异常断行错误!(转载) 我没试过,不过在读文件的时候最好还是...

错误 关于使用 file() 读入整个文件时出现的异常断行错误! 我现在本机使用 php 4.03pl1 在对文本数据文件操作时使用 file() 来读入整个文件,然后显示,代码如下: <?$message = file("message.txt");$i=0;for($i=0;$i<count($message);$i++){echo $i."".$message;$i++;}?> 在我的机器上面完全正常,但是我上传到服务器上时发现,本来一行的数

图片-请问:eclipse导出项目后,在用dos命令运行,出现错误,如何解决?谢谢!

问题描述 请问:eclipse导出项目后,在用dos命令运行,出现错误,如何解决?谢谢! 解决方案 jdbc驱动的问题.看看是否缺少库 解决方案二: 导出项目时选上jcdb的jar包,若不在工程中,用java运行jar时要加路径参数,增加jcdbjar包到classpath 解决方案三: jdbc写错了,冇意思

求解决,急用啊大神们,Struts2配置文件首行错误

问题描述 求解决,急用啊大神们,Struts2配置文件首行错误 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd&quo

sudo命令:解决使用Linux命令行时出现的错误提示

你在使用 Linux 命令行时曾经得到过"拒绝访问(Permission denied)"的错误提示吗?这可能是因为你正在尝试执行一个需要 root 权限的操作.例如,下面的截图展示了当我尝试复制一个二进制文件到一个系统目录时产生的错误. shell 的拒绝访问 那么该怎么解决这个错误?很简单,使用 sudo 命令. 用 sudo 运行命令 用户运行此命令后会被提示输入他们(自己)的登录密码.一旦输入了正确的密码,操作将会成功执行. 毫无疑问,sudo 是任何在 Linux 上使用命令

PHP捕获Fatal error错误的方法_php实例

Fatal error 一般是不需要捕获的, 但是在一个复杂的程序中, 如果偶然出现内存不足导致fatal error就难以处理了. 比如. fatal error 出在MySQL类中fetch的时候. 这个时候就很难定位到真正问题所在了. PHP异常处理中 可以通过set_error_handler来捕获. 但是却只能捕获 NOTICE/WARNING级别的错误, 对于E_ERROR是无能为力的. register_shutdown_function 能解决set_error_handler的

Oracle数据库imp命令导入时1659错误处理

今儿在自己电脑上搭建开发环境,在给数据库导入表结构以及数据时报1659错误,错误内容如下: IMP-00017: 由于 ORACLE 错误 1659, 以下语句失败:         "CREATE TABLE "T_DATA_KKCL" ---- IMP-00003: 遇到 ORACLE 错误 1659ORA-01659: 无法分配超出 6 的 MINEXTENTS (在表空间 HWITS_1中) 第一反应--空间不足?查看发现C盘只有614KB,尼玛!PS:Oracle安

linux下uniq命令去除重复行的例子

一,uniq干什么用的 文本中的重复行,基本上不是我们所要的,所以就要去除掉.linux下有其他命令可以去除重复行,但是我觉得uniq还是比较方便的一个.使用uniq的时候要注意以下二点 1,对文本操作时,它一般会和sort命令进行组合使用,因为uniq 不会检查重复的行,除非它们是相邻的行.如果您想先对输入排序,使用sort -u. 2,对文本操作时,若域中为先空字符(通常包括空格以及制表符),然后非空字符,域中字符前的空字符将被跳过 二,uniq参数说明 [zhangy@BlackGhost