在SQL Server中插入之前验证输入参数
我有一个SQL Server存储过程,它接收XML参数并将值复制到临时表中。然后验证这些值,以确保提交了所有必需的数据,并在数据不干净时采取措施。如果数据是好的,那么我将继续处理一系列业务规则,并最终从临时表插入多个表中 我的问题似乎很明显,但我还是要问。在插入到后续表中时,我通过直接从临时表中选择来使用存储在临时表中的值。我是否需要再次验证这些值以确保没有空值在SQL Server中插入之前验证输入参数,sql,sql-server,validation,Sql,Sql Server,Validation,我有一个SQL Server存储过程,它接收XML参数并将值复制到临时表中。然后验证这些值,以确保提交了所有必需的数据,并在数据不干净时采取措施。如果数据是好的,那么我将继续处理一系列业务规则,并最终从临时表插入多个表中 我的问题似乎很明显,但我还是要问。在插入到后续表中时,我通过直接从临时表中选择来使用存储在临时表中的值。我是否需要再次验证这些值以确保没有空值 DECLARE @col1Val AS INT DECLARE @col2Val AS INT SET @col1Val = (SE
DECLARE @col1Val AS INT
DECLARE @col2Val AS INT
SET @col1Val = (SELECT column1 FROM #TempTable)
SET @col2Val = (SELECT column2 FROM #TempTable)
INSERT INTO Table (column1, column2)
VALUES (@col1Val, @col2Val)
VS:
插入前是否需要检查这些值是否为null和empty?我想公平地说,如果我已经验证了所有内容,那么在插入时再次验证它将是一种浪费。我已经做了空值检查等
我不确定这个问题是否属于代码审查,如果是,请随意关闭它
此表中只有一行 你只需做
INSERT INTO Table (column1, column2)
SELECT ISNULL(Column1, 0),
ISNULL(Column2, 0)
FROM #TempTable;
-- Where if there is conditions
如果要检查空值并替换为0,否则,只需将数据作为
INSERT INTO Table(Column1, Column2)
SELECT Column1,
Column2
FROM #TempTable;
-- Where if there is conditions
不需要声明这些变量,也不需要声明这一部分
SET @col1Val = (SELECT column1 FROM #TempTable)
SET @col2Val = (SELECT column2 FROM #TempTable)
这不是您所想的,它将在您的表中有1行时工作,如果此表有多行,那么它将抛出一个错误
子查询返回了多个值。当子查询在=、!=、=或者当它被用作表达式时
更新:
我想问的是,如果我已经在临时表上进行了验证,那么当我从中选择进行插入时,是否需要再次验证
如果您在将数据插入到可诱惑文件时已经检查了数据,并且您确信插入数据后数据没有变化,那么您可以直接插入数据,无需检查两次空值。您只需执行以下操作即可
INSERT INTO Table (column1, column2)
SELECT ISNULL(Column1, 0),
ISNULL(Column2, 0)
FROM #TempTable;
-- Where if there is conditions
如果要检查空值并替换为0,否则,只需将数据作为
INSERT INTO Table(Column1, Column2)
SELECT Column1,
Column2
FROM #TempTable;
-- Where if there is conditions
不需要声明这些变量,也不需要声明这一部分
SET @col1Val = (SELECT column1 FROM #TempTable)
SET @col2Val = (SELECT column2 FROM #TempTable)
这不是您所想的,它将在您的表中有1行时工作,如果此表有多行,那么它将抛出一个错误
子查询返回了多个值。当子查询在=、!=、=或者当它被用作表达式时
更新:
我想问的是,如果我已经在临时表上进行了验证,那么当我从中选择进行插入时,是否需要再次验证
如果您在将数据插入Tentiable时已经检查了数据,并且您确定在插入数据后数据没有变化,那么您可以直接插入数据,不需要两次检查空值。您是否在Tentable中有多行?您是否在Tentable中有多行?此临时表中将只有一行,因为存储过程一次只获取一条记录我想我要问的是,如果我已经对临时表进行了验证,是否有必要当我从中选择插入时再次验证?谢谢,这就是我想要的。值得注意的是,这个临时表中只有一行,因为存储过程一次只获取一条记录。我想我要问的是,如果我已经对临时表进行了验证,那么当我从临时表中选择插入时是否需要再次验证?谢谢,这就是我想要的。感激