表值函数参数为varchar

Lam*_*fif -1 sql vb.net sql-server ado.net sql-server-2008

我在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 
)
Run Code Online (Sandbox Code Playgroud)

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

 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()
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

列名无效:'EA2'

我需要知道 :

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

Pau*_*ulG 5

你错过'了sql.

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

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
Run Code Online (Sandbox Code Playgroud)

祝好运.

保罗