存储过程在一台机器上成功但在另一台机器上失败?

服务劳里森

奇怪的问题。当我在一台SQL Server上创建存储过程时,它会成功,但是在另一台SQL Server上,完全相同的代码会失败。当“ dbo.Split中的select s”行被删除时,它们都成功

错误是

消息102,级别15,状态1,过程DeliveryReportFFF,行
38'd2'附近的语法不正确。
消息102,级别15,状态1,过程DeliveryReportFFF,第65行
'+'附近的语法不正确。
消息102,级别15,状态1,过程DeliveryReportFFF,第75行
')'附近的语法不正确。
消息156,级别15,状态1,过程DeliveryReportFFF,第81行
关键字“ AS”附近的语法错误。
消息156,级别15,状态1,过程DeliveryReportFFF,第87行
关键字“ AS”附近的语法错误。
消息156,级别15,状态1,过程DeliveryReportFFF,第93行
关键字“ AS”附近的语法错误。
消息156,第15层,状态1,过程DeliveryReportFFF,第101行
关键字“ ORDER”附近的语法不正确。

第一个错误抱怨d2.​​DeliveryLocation作为Split的参数。

SSMS版本是2012。这里可能出什么问题?

SELECT 
   row_number() over (order by o.OrderNumber, d2.DeliveryNumber, pd.TariffType) as Row 
   , d.BookTime
   , d2.DeliveryRoute
   , (select s from dbo.Split(' ', d2.DeliveryLocation) where pn = 2) as SorterExit
   , d2.DeliveryLocation
FROM Delivery d WITH (NOLOCK)

拆分的UDF看起来像这样:

ALTER FUNCTION [dbo].[Split] (@sep nchar(1), @s nvarchar(512))
RETURNS table
AS
RETURN (
    WITH tokens(pn, start, stop) AS (
      SELECT 1, 1, CHARINDEX(@sep, @s)
      UNION ALL
      SELECT pn + 1, stop + 1, CHARINDEX(@sep, @s, stop + 1)
      FROM tokens
      WHERE stop > 0
    )
    SELECT pn,
      SUBSTRING(@s, start, CASE WHEN stop > 0 THEN stop-start ELSE 512 END) AS s
    FROM tokens
  )
文妮

尝试将其用作外部应用。

SELECT row_number() over (order by o.OrderNumber, d2.DeliveryNumber, pd.TariffType) as Row 
, d.BookTime
, d2.DeliveryRoute
, s.s as SorterExit
, d2.DeliveryLocation
FROM Delivery d WITH (NOLOCK)
OUTER APPLY dbo.Split(' ', d2.DeliveryLocation) as s

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

涉及grep的相同bash脚本在一台机器上成功,但在另一台机器上失败

属性在一台机器上工作正常,但在另一台机器上却报错

Kerberos AD Spnego身份验证在一台机器上失败,但在另一台机器上失败

如何在一台机器上编译幻象,然后在另一台机器上“移植”?

在一台机器上构建内核,在另一台机器上安装

ESRI层显示在一台机器上,但不在另一台机器上

timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP在一台机器上可以为null,但在另一台机器上不能为null吗?

Github文件在一台机器上可以正常运行,但在另一台机器上无法运行

FtpWebRequest.Create和Uri在一台机器上引发异常,但在另一台机器上未引发

在一台机器上创建扩展上下文时,AIR App崩溃,但在另一台机器上运行正常

令人困惑的 MySQL-PHP 插入在一台机器上 100% 工作,但在另一台机器上工作 50%

在一台机器上访问数据库运行时错误 3340,但在另一台机器上没有

同一个docker映像在一台机器上工作而在另一台机器上失败

相同的apache mod_rewrite配置可在一台机器上运行,而在另一台机器上失败

从另一台机器导入MDF

来自另一台机器的ssh命令

一台Linux机器上的分段错误,但使用C ++代码不在另一台机器上

如何将端口从一台机器转发到另一台机器?

一台机器如何ping另一台机器,但是反向ping不起作用

不能从一台机器 SSH 到另一台机器

kafka 消息从一台机器发送到另一台机器

将文件从一台机器连续传输到另一台机器

与侦听器不一致-一台机器上的onUpdate和另一台机器上的onReplaced

一台机器上出现堆栈溢出错误,而另一台机器不在同一代码上

为什么一个tfs构建摘要显示在一台机器上而不是另一台机器上的测试结果

为什么这个python代码在一台机器上而不是另一台机器上给出“TypeError:JSON对象必须是str,而不是'bytes'”

在一台机器上编译 Go 代码并在另一台机器上运行它会降低程序的性能吗?

为什么Spring在一台机器上而不是另一台机器上出现循环依赖问题?

Dos脚本在一台机器上运行正常,而在另一台机器上运行不正常,为什么?