【问题标题】:Table valued function parameter as varchar表值函数参数为 varchar
【发布时间】:2014-07-07 14:24:40
【问题描述】:

我的 SQL Server 2008 数据库中有这个表值函数:

Create FUNCTION dbo.fct1(@Code varchar(10) )
RETURNS TABLE
AS
RETURN
(
   select CODE , NOM 
   from CODIF 
   where NUMERO = 'TP'
   and CODE =  @Code 
)

当我从我的代码中调用它时:

 sSQL = "select * from fct1(" & Code & ")"
        Dim cmd As New SqlCommand(sSQL, Connection)
        If Connection.State <> ConnectionState.Open Then Connection.Open()
        Dim rd As SqlClient.SqlDataReader
        rd = cmd.ExecuteReader()

我收到此错误:

列名无效:'EA2'

我需要知道:

  • 这个错误的原因是什么?
  • 我该如何解决?

【问题讨论】:

    标签: sql sql-server vb.net sql-server-2008 ado.net


    【解决方案1】:

    您在 sql 中缺少 '

    您可能应该参数化 SQL 并尝试使用 using:

    using conn as new sqlconnection(connstring), comm as new sqlcommand("",conn)
    
        conn.open()
    
        comm.commandtype = commandtype.text
        comm.commandtext = "select * from fct1(@Code)"
        comm.parameters.addwithvalue("@Code",Code)
    
        Dim rd as sqldatareader = comm.executedatareader
    
    end using
    

    【讨论】:

      【解决方案2】:

      错过'

      sSQL = "select * from fct1('" & Code & "')"
              Dim cmd As New SqlCommand(sSQL, Connection)
              If Connection.State <> ConnectionState.Open Then Connection.Open()
              Dim rd As SqlClient.SqlDataReader
              rd = cmd.ExecuteReader()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多