Sql 如果字段为空,如何返回错误,否则在联接期间返回所有行
我有下列表格Sql 如果字段为空,如何返回错误,否则在联接期间返回所有行,sql,sql-server,sql-server-2008,null,isnull,Sql,Sql Server,Sql Server 2008,Null,Isnull,我有下列表格 TableA(Field1,Field2) TableB(Field3,Field4) 现在我在这些表中选择值并返回。但是,如果表B中的字段3为null,则返回错误 我的程序如下 create proc name @Field1 varchar, @Field2 varchar, @Field3 varchar out, @Field4 varchar out, @Error varchar out AS BEGIN SELECT @Field2 = tA.Field2,
TableA(Field1,Field2)
TableB(Field3,Field4)
现在我在这些表中选择值并返回。但是,如果表B中的字段3
为null
,则返回错误
我的程序如下
create proc name
@Field1 varchar,
@Field2 varchar,
@Field3 varchar out,
@Field4 varchar out,
@Error varchar out
AS
BEGIN
SELECT @Field2 = tA.Field2,
@Field3 = tA.Field3,
FROM tA C INNER JOIN TableB tB ON
tA.Field1 = tB.Field1
WHERE tA.Field4 = @Field4
如果字段3为空,我不知道如何返回错误
我正在考虑编写另一个查询,用于检查此表是否为空您可以使用RAISEERROR for use defined error
您可以尝试以下代码来引发错误消息:
BEGIN TRY
IF @Field3 IS NULL
RAISERROR ('Fields 3 cannot be null .', 16,1);
END TRY
BEGIN CATCH
SET @Error = ERROR_MESSAGE()
END CATCH
听起来您需要在数据库中进行验证,比如使用插入触发器或
notnull
属性。但由于结果为空值而返回错误是错误的做法。如果需要文本错误,请使用SELECT@Field3=ISNULL(tA.Field3,'error')…
或SELECT@Field3=COALESCE(tA.Field3,'error')…
或SELECT@Field3=CASE当tA.Field3为空时,则使用“error”否则tA.Field3结束…
@lad2025:谢谢,它是通过一些IF-ELSE来解决的。(对我来说很简单:)没有人,这不是最好的方法。我在找别的东西
BEGIN TRY
IF @Field3 IS NULL
RAISERROR ('Fields 3 cannot be null .', 16,1);
END TRY
BEGIN CATCH
SET @Error = ERROR_MESSAGE()
END CATCH