gpt4 book ai didi

sql-server - SQL 参数值被截断

转载 作者:行者123 更新时间:2023-12-02 08:08:37 26 4
gpt4 key购买 nike

我有以下代码,它简单地执行一个接受 1 个参数的存储过程。

Public Function GetData(ByVal Faccode As String, Optional ByRef s As String = "") As DataSet

Dim params As SqlParameter() = {New SqlParameter("@aFacilityCode", SqlDbType.VarChar, ParameterDirection.Input)}

' Set the value
params(0).Value = "SW29" 'Faccode

Try
Dim DSet As DataSet = RunProcedure("usp_FL_GetAllData", params, "ContactData")
Return DSet
Catch ex As Exception
Return Nothing
End Try

End Function

Protected Overloads Function RunProcedure( _
ByVal storedProcName As String, _
ByVal parameters As IDataParameter(), _
ByVal tableName As String) _
As DataSet

Dim dataSet As New dataSet

Try
myConnection.Open()
Dim sqlDA As New SqlDataAdapter
sqlDA.SelectCommand = BuildQueryCommand(storedProcName, parameters)
sqlDA.Fill(dataSet, tableName)

Return dataSet
Catch ex As Exception
Return Nothing
Finally
If myConnection.State = ConnectionState.Open Then
myConnection.Close()
End If
End Try
End Function

Private Function BuildQueryCommand( _
ByVal storedProcName As String, _
ByVal parameters As IDataParameter()) _
As SqlCommand

Dim command As New SqlCommand(storedProcName, myConnection)
command.CommandType = CommandType.StoredProcedure

Dim parameter As SqlParameter
For Each parameter In parameters
command.Parameters.Add(parameter)
Next

Return command

End Function

SQL 过程定义如下:

CREATE PROCEDURE [dbo].[usp_FL_GetAllData]
(
@aFacilityCode VARCHAR(10)
)

当我运行该软件时,SQL Profiler 显示正在进行此调用:

exec usp_FL_GetAllData @aFacilityCode='S'

最初,我在 GetData 函数中为我的参数分配值 Faccode,但注意到这个奇怪的截断,这就是我现在硬编码该值的原因。

我唯一能想到的是 SQL 过程将参数定义为 varchar(1) 但它被定义为 10 所以我不知道为什么会这样。 RunProcedure 用在许多不表现出这种行为的地方。

还有什么可能导致这种情况?

最佳答案

要了解为什么从构造函数调用中删除参数方向可以解决问题,请查看 list of constructorsSqlParameter 类定义。请注意,没有采用参数名称、SqlDbTypeParameterDirection 的构造函数;您实际调用的构造函数是 this one ,其第三个参数是参数大小。因为 ParameterDirection.Input 的支持值为 1,所以您明确地将参数的大小设置为一个字符。

当您改为调用未明确给出大小的构造函数时,对象会根据您分配的值推断参数的大小,如 documentation for that property 中所述。 .

关于sql-server - SQL 参数值被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49115539/

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