【问题标题】:Getting a varchar back from a SQL Server 2008 Stored Procedure in a VB.net program从 VB.net 程序中的 SQL Server 2008 存储过程中获取 varchar
【发布时间】:2012-07-17 20:48:26
【问题描述】:

我正在尝试从我的 VB.net 程序中的存储过程中获取字符串 (nvarchar)。当我在 SQL Studio 中运行 SP 时,它很好,但是当我尝试在程序中运行它时,我得到了错误:

Error converting data type nvarchar to int.

这是我的 SP:

ALTER PROCEDURE cusVerifyAssignment
@assignment_number int,
@compass_or_anodes char(1),
@return nvarchar(1000) OUTPUT
    AS
    BEGIN
SET NOCOUNT ON;

-- Insert statements for procedure here
IF @compass_or_anodes = 'C'
BEGIN
    SET @return = 
    (SELECT CONVERT(nvarchar(1000), p.display_name + '|' + ISNULL(xro.release_type, '') + '|' + a.comments + '|' + a.assignment_id) as blah
        FROM Workplace_base.dbo.people p
        INNER JOIN Workplace_base.dbo.assignments a ON p.people_id = a.people_id
        LEFT OUTER JOIN Workplace_base.dbo.xro_assignment_release_types xro ON a.release_type_id = xro.release_type_id
    WHERE assignment_num = @assignment_number)
END
ELSE
BEGIN
    SET @return = 
    (SELECT CONVERT(nvarchar(1000), p.display_name + '|' + ISNULL(xro.release_type, '') + '|' + a.comments + '|' + a.assignment_id) as blah
        FROM Anodes_Compass.dbo.people p
        INNER JOIN Anodes_Compass.dbo.assignments a ON p.people_id = a.people_id
        LEFT OUTER JOIN Anodes_Compass.dbo.xro_assignment_release_types xro ON a.release_type_id = xro.release_type_id
    WHERE assignment_num = @assignment_number)
END
END
GO

这是我的 vb 代码:

    Dim paramNumber As New OleDbParameter("@assignment_number", SqlDbType.Int)
    Dim paramDB As New OleDbParameter("@compass_or_anodes", SqlDbType.Char)
    Dim paramReturn As New OleDbParameter("@return", SqlDbType.NVarChar)

    Dim reader As OleDbDataReader

    paramNumber.Value = assignmentNumber
    paramDB.Value = "C"
    paramReturn.Direction = ParameterDirection.Output


    cmd = New OleDbCommand("cusVerifyAssignment", con)
    cmd.CommandType = CommandType.StoredProcedure

    cmd.Parameters.Add(paramNumber)
    cmd.Parameters.Add(paramDB)
    cmd.Parameters.Add(paramReturn)

    con.Open()
    reader = cmd.ExecuteReader()
    con.Close()

    Return reader.GetString(0)

我也尝试过使用 executeNonQuery,但这让我得到了同样的结果。谁能给点建议?

谢谢

【问题讨论】:

  • 我对其进行了一些更改,而不是使用 OUTPUT 参数,在查询中我只是选择它并使用阅读器,所以我有一些技巧,但我真的很喜欢了解如何让它发挥作用。

标签: vb.net sql-server-2008 stored-procedures output-parameter


【解决方案1】:

执行标量?应该允许返回单个值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    • 1970-01-01
    • 2015-01-26
    相关资源
    最近更新 更多