如何使用VB.NET应用程序中WHERE子句中调用的函数执行SELECT语句?

我有一个带有“日期”列的数据表。
我发现了一个SQL函数,该函数返回日期的欧洲星期数(计算星期数的方式不同于美国的星期数)。

我在VB.NET应用程序中以字符串形式编写了我的请求:(我包含了该函数)

Connexion.Open()

Dim Rq As String = "CREATE FUNCTION dbo.F_NUMERO_SEMAINE_ISO  (@JOUR datetime)
    RETURNS int
    AS
    BEGIN
       DeclARE @NSI int;

       SET @NSI = DATEPART(wk,@JOUR) + 1 - DATEPART(wk,CAST(DATEPART(yy,@JOUR) as CHAR(4)) + '0104');

    -- cas particuliers : du 1 au 3 janvier,le jour peut appartenir à la dernière semaine de l'année précédente
       IF @NSI = 0
          SET @NSI = dbo.F_NUMERO_SEMAINE_ISO(CAST(DATEPART(yy,@JOUR)-1 AS CHAR(4)) + '12' + CAST(24 + DATEPART(DAY,@JOUR) AS CHAR(2))) + 1;

    -- cas particuliers : du 29 au 31 décembre,le jour peut appartenir à la première semaine de l'année suivante
       IF (DATEPART(mm,@JOUR) = 12) AND ( (DATEPART(dd,@JOUR) - DATEPART(dw,@JOUR) ) >= 28 ) 
          SET @NSI = 1;

       RETURN @NSI;
    END

    GO

    SELECT COUNT(*) FROM dbo.DATA WHERE dbo.F_NUMERO_SEMAINE_ISO(Date) = 34
    DROP function dbo.F_NUMERO_SEMAINE_ISO"

Dim Cmd As New SqlCommand(Rq,Connexion)
Try
    Dim Reader As Integer = Cmd.ExecuteScalar()
    MessageBox.Show("nb nouveau : " & Reader.ToString())
Catch ex As Exception
    MsgBox(ex.Message)
Finally
    Cmd.Dispose()
    Connexion.Close()
End Try

我在cmd.executeScalar()的行上有错误

  

“'GO'的语法错误”和“'F_NUMERO_SEMAINE_ISO'的语法错误”

我不知道如何从vb.net代码中调用SQL函数,但是我确定自己做错了。

hftxc 回答:如何使用VB.NET应用程序中WHERE子句中调用的函数执行SELECT语句?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3158978.html

大家都在问