gpt4 book ai didi

sql - 允许较新的 SQL 语法优雅地回退到旧版本?

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

我支持一个陈旧的 ASP.net 系统,该系统必须在许多客户的旧 SQL Server 安装(可追溯到 2005 年)上运行。

有没有什么方法可以在不遇到 Incorrect syntax near.... 错误的情况下使用更高版本的 SQL Server 的功能?

我想使用的当前功能是 Azure SQL 12 上的 AT DATE TIME,例如选择 CONVERT(datetime, SYSDATETIMEOFFSET() AT TIME ZONE 'GMT Standard Time') 实现自定义 GETDATE() 函数,但早期的 Sql 版本拒绝编译它。

是在 sql 字符串上运行 exec() 的唯一选项,还是有更优雅的解决方案?

--do a version check, and then run the appropriate sql string?
if (CHARINDEX('Azure', @@VERSION,0) > 0)
exec('select CONVERT(datetime, SYSDATETIMEOFFSET() AT TIME ZONE ''GMT Standard Time'')')
else
select getDate()

最佳答案

您的选择如下:

  1. Dynamic Sql,这就是你正在做的。
  2. 让客户端程序/应用程序先检查版本,然后调整其查询/请求(实际上只是将动态部分推送给客户端)。
  3. 使用专门为它们所在的 SQL Server 版本编写的存储过程。

其中,#3 是首选解决方案。

关于sql - 允许较新的 SQL 语法优雅地回退到旧版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43075193/

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