是否有Transact-SQL的替代品

时间:2010-02-21 10:05:37

标签: sql-server tsql

多年来我第一次在SQL Server 2008中进行了一些T-SQL编程,并忘记了语言的真实程度:

  • 流量控制(所有开始/结束的东西)感觉笨重
  • 异常处理很差。例外不会像其他语言一样冒泡。没有重新投掷,除非你自己编码并且 raiserror 功能甚至拼写不正确(这让我有些头疼!)
  • 字符串处理不佳
  • 唯一的序列类型是表格。我必须编写一个函数来根据分隔符拆分字符串,并且必须将它存储在一个表中,该表中包含字符串部分以及指示序列中位置的值。
  • 如果你需要在存储过程中进行查找,那么操作结果是很痛苦的。如果结果包含某种排序列,您必须使用游标或使用嵌套查找一起修改while循环

我意识到我可以使用C#对我的存储过程进行编码,但是这需要允许服务器允许CLR功能,这在我的工作场所不是一种选择。

有没有人知道SQL Server中是否有T-SQL的替代品,或者是否有任何计划引入某些东西。当然,必须有一个更现代的替代方案......

PS:这不是为了开始一场火焰战,我真的对这些选择感兴趣。

3 个答案:

答案 0 :(得分:8)

T-SQL没有任何问题;它完成了预期的工作(除了可能添加控制流结构,但我离题了!)。

也许看看LINQ?您可以编写CLR Stored Procedures,但我不建议这样做,除非它缺少某些功能(或重字符串处理)。

答案 1 :(得分:3)

所有其他数据库存储过程语言(PL / SQL,SQL / PSM)都存在大致相同的问题。就个人而言,我认为这些语言完全适合用于它们的目的 - 它们最适合用于代码数据驱动的逻辑,尤其是。如果你想为多个应用程序重用它。

所以我想我的反问题是,为什么你希望你的程序作为数据库服务器进程的一部分运行?在应用程序或中间件级别,您不是要更好地解决这个问题吗?在那里,您可以选择任何语言或数据处理工具。

答案 2 :(得分:2)

从我的观点来看,SQL Server中只有T-SQL的替代方法是不使用SQL Server

根据你的点处理蜇丝分隔符, 从哪里来的这些弦? 您可以尝试使用Integration服务和“ssis包”将数据从一个转换为另一个。 此外,还有通过Linked Serves访问非SQL数据的好方法,