Kob*_*kie 5 sql t-sql sql-server
我有一个插入语句如下.我能够调试我的存储过程并逐步执行我的代码以验证我的代码是否运行,但是有趣的事情发生了.
我希望保存在数据库中的值不会保存.而是在表中创建一行并且RecordCreatedField
正确创建了行,即使包含主键但是我希望插入的实际列也不是.所有列nvarchar/varchar
,除了日期列和ID,但人口只有那些列.但是,以下@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
Run Code Online (Sandbox Code Playgroud)
我将不胜感激任何关于我如何解决这个问题或理解正在发生的事情的建议.
这是一个主要存储过程的SQl小提琴,它调用我的插入代码. 我的代码的SQL小提琴
@Kobojunkie:如果您遵循 T-SQL 最佳实践的黄金规则之一,则可以轻松管理此类问题:使用 TRY/CATCH 块来包装 INSERT 和 DELETE 语句的代码。拥有一个适当的 CATCH 块,包括 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
Run Code Online (Sandbox Code Playgroud)
希望这些信息有助于解决存储过程中的问题!