Stored procedures SSIS脚本组件调用存储过程返回-1
我尝试实现对存储proc的调用,proc返回稍后将使用的ID。 每次执行时,我都会将out参数设置为-1。下面是我的示例代码:Stored procedures SSIS脚本组件调用存储过程返回-1,stored-procedures,ssis,return-value,script-component,Stored Procedures,Ssis,Return Value,Script Component,我尝试实现对存储proc的调用,proc返回稍后将使用的ID。 每次执行时,我都会将out参数设置为-1。下面是我的示例代码: OleDbCommand sqlStrProc = new OleDbCommand(); sqlStrProc.Connection = dbConn; sqlStrProc.CommandText = "dbo.insert_test"; sqlStrProc.CommandType = Command
OleDbCommand sqlStrProc = new OleDbCommand();
sqlStrProc.Connection = dbConn;
sqlStrProc.CommandText = "dbo.insert_test";
sqlStrProc.CommandType = CommandType.StoredProcedure;
sqlStrProc.Parameters.Add("@p_TestID", OleDbType.Integer, 255).Direction = ParameterDirection.Output;
sqlStrProc.Parameters.Add("@p_TestName", OleDbType.VarChar).Value = "Test";
sqlStrProc.Parameters.Add("@p_CreatedBy", OleDbType.VarChar).Value = "Test";
int personID = sqlStrProc.ExecuteNonQuery();
Row.outPersonID = personID;
personID总是-1。我做错了什么。请帮忙。。!!
下面是存储的过程代码
CREATE PROCEDURE [dbo].[INSERT_TEST]
@p_TestID int OUTPUT,
@p_TestName varchar (50),
@p_CreatedBy varchar (100)
AS
SET NOCOUNT ON
INSERT INTO Test(
TestName,
CreatedBy)
VALUES
( @p_TestName,
@p_CreatedBy)
SELECT @p_TestID = SCOPE_IDENTITY()
-1可能意味着存储过程未能按预期执行,事务被回滚。您可能希望查找任何截断问题,因为两个输入参数的大小不同,但使用相同的输入。另外,我假设您有正确的代码来打开和关闭连接等?-1返回值是在执行SP过程中产生的错误,这是由于以下原因造成的: SP结构:每次执行SP时,它都会在SP已存在时再次尝试创建它。因此,您必须将其设置为ALTER过程而不是CREATE过程,或者执行以下操作: 如果存在,请从sys.objects中选择*,其中object_id=object_IDN'[dbo].[INSERT_TEST]'并键入N'p',N'PC' 丢弃程序[dbo]。[插入测试] 去 创建过程[dbo]。[插入测试] @p_TestID int输出, @p_TestName varchar 50, @p_由varchar 100创建 作为 数据库连接表名称和位置:必须使用OLEDB指定连接到写数据库的ConnectionString。尝试测试完整的表路径;如下所示 插入到[DATABASENAME].[SHCEMA].[TABELNAME] 名称 创造的 价值观 @p_TestName, @p_由 将您的SP定义为: 创建过程[名称] 作为 开始 结束 虽然这不是问题,但这是在连接事务方面编写SP的正确方法 让我知道它是否适合您: 抱歉,
S.ANDOURASP是否真的按预期插入了记录?要了解一些情况并学习一些新知识,请按照此处的说明观察正在运行的存储过程。您应该能够验证您的代码是否发送了正确的参数,以及您的存储过程是否正确执行。1.正在调用dbo.INSERT\u测试。这里描述的CREATE/ALTER问题与返回值无关。2.是的,这可以修复错误3。这是误导。“开始-结束”与代码块有关,与“连接事务”无关。您这里指的是事务吗?也许你对BEGIN-TRANHey@ElectricLlama感到困惑,我非常感谢你的反馈,谢谢,这篇文章将被编辑。关于你所说的,是的,第二点是解决方案。