gpt4 book ai didi

SQL Server 插入语句成功运行,但即使创建了行,值也不会添加到表中

转载 作者:行者123 更新时间:2023-12-03 00:49:54 24 4
gpt4 key购买 nike

我有一个插入语句如下。我能够调试我的存储过程并单步执行我的代码以验证我的代码是否运行,但有趣的事情发生了。

我希望保存在数据库中的值没有保存。相反,会在表中创建一行,并正确创建 RecordCreatedField,甚至包含主键,但不包含我期望插入的实际列。除日期列和 ID 外,所有列均为 nvarchar/varchar,但仅填充这些列。但是,以下 @PRCUPC 、@PRCEAN 、@PRCGTIN、@PRCatalogNumber 不知何故被省略。

EXEC spinsertprodcode 
@pid out,
@ProdID,
@UPC,
@EAN,
@TIN,
@CNumber,
0,
0,
1,
@staid,
@counter out



INSERT INTO dbo.ProdCodes
(PRProductID
,PRCUPC
,PRCEAN
,PRCGTIN
,PRCatalogNumber
,PRIsReplacement
,PRIsReplaced
,PRCRecordCreatedDate
,PRCIsActive
,PRStatusFlag)

OUTPUT INSERTED.PRCID INTO @opID

VALUES
(@PRProductID,
@PRCUPC,
@PRCEAN,
@PRCGTIN,
@PRCatalogNumber,
@PRIsReplacement ,
@PRIsReplaced,
GETDATE(),
@PRCIsActive,
@PRStatusFlag)

SELECT @PRCID = O.ID FROm @opID O

如果有任何关于如何解决此问题或了解发生了什么情况的建议,我将不胜感激。

Image of the Debug Screen where I confirm the right values are passed

这是调用我的插入代码的主存储过程的 SQl fiddle 。 SQL Fiddle of my code

最佳答案

@Kobojunkie:如果您遵循 T-SQL 最佳实践的黄金法则之一,则可以轻松管理此类问题:使用 TRY/CATCH block 来包装 INSERT 和 DELETE 语句的代码。拥有一个适当的 CATCH block ,包括 ERROR_NUMBER、ERROR_SEVERITY、ERROR_PROCEDURE、ERROR_LINE 和 ERROR_MESSAGE 等系统变量,将为您提供有关正在执行的操作出了什么问题的线索:

BEGIN CATCH
SELECT @ErrorDetails =
N'Error raised when executing [Insert/Delete] statement: '
+ N' SQL Error: ' + ERROR_NUMBER()
+ N', Level: ' + ERROR_SEVERITY()
+ N', Line: ' + ERROR_LINE()
+ N', Message: ' + ERROR_MESSAGE()
END CATCH

希望这些信息有助于解决存储过程中的问题!

关于SQL Server 插入语句成功运行,但即使创建了行,值也不会添加到表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12867597/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com