0

我试图从存储过程中获取 SCOPE_IDENTITY 到我的 vb.NET 应用程序,但我得到了 DBNull 异常。

这是我的 SP:

ALTER PROCEDURE [dbo].[sp_XYZ] 
@ID INT,
@OtherID INT OUTPUT

AS
BEGIN

SELECT 
@Name = name,
FROM dbo.PERSON
WHERE  id = @ID

INSERT INTO [SERVERSOLMAR\TSW].TSWDATA.dbo.t_Employees
    (
    Name
    )
VALUES
    (
    @Name
    )
    SET @OtherID = SCOPE_IDENTITY() 
END

我的 vb.NET 代码:

Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings("CON").ConnectionString)
    Dim dataAdapter As New SqlDataAdapter("sp_XYZ", con)
    Dim ARLI As Integer
    Try
        con.Open()
        With dataAdapter.SelectCommand
            .CommandType = CommandType.StoredProcedure
            .Parameters.Add("@ID", SqlDbType.VarChar).Value = id

            Dim identity As New SqlParameter("@OtherID", SqlDbType.Int)
            valorInteger.Direction = ParameterDirection.Output
            .Parameters.Add(identity)
            .ExecuteNonQuery()
            ARLI = identity.Value
        End With
End try

插入语句工作正常。

问题是我得到“从类型'DBNull'到类型'Integer'的转换无效。”

我正在使用链接服务器,这可能是问题吗?

4

1 回答 1

0

尝试使用 SCOPE_IDENTITY() 而不是 SCOPE_IDENTITY。

于 2013-06-08T18:40:16.250 回答