我已经写了这个查询来更新我的数据库。
UPDATE SMGCARTES
SET scr_flspedito = '1'
, scr_dtmodifica = dt_conf
FROM (
SELECT scr_flspedito
, scr_codsoc societa
, scr_numcartone cartone
, scr_numordine num_ordine_ss
, ordine num_ordine_px
, DATA_CONF AS dt_conf
FROM SMGCARTES A
LEFT JOIN SMGBOLTES
ON a.scr_numordine = bll_numordine
AND a.scr_codsoc = bll_codsoc
RIGHT JOIN (
SELECT DISTINCT CASE ISNULL(NULLIF(CHARINDEX('/', "Riferimento Spedizione", 1) - 1, - 1), len("Riferimento Spedizione"))
WHEN len("Riferimento Spedizione")
THEN "Riferimento Spedizione"
ELSE SUBSTRING("Riferimento Spedizione", 1, CHARINDEX('/', "Riferimento Spedizione", 1) - 1)
END AS ordine
, "Data consegna prevista" AS cons_prev
, "Data Conferimento Hub" AS DATA_CONF
FROM IMPORT_PALLEX
WHERE "Riferimento Spedizione" IS NOT NULL
UNION ALL
SELECT DISTINCT CASE ISNULL(NULLIF(CHARINDEX('/', "Riferimento Cliente", 1) - 1, - 1), len("Riferimento Cliente"))
WHEN len("Riferimento Cliente")
THEN "Riferimento Cliente"
ELSE SUBSTRING("Riferimento Cliente", 1, CHARINDEX('/', "Riferimento Cliente", 1) - 1)
END AS ordine
, "Data consegna prevista" AS cons_prev
, "Data Conferimento Hub" AS DATA_CONF
FROM IMPORT_PALLEX
WHERE "Riferimento Spedizione" IS NOT NULL
UNION ALL
SELECT DISTINCT CASE ISNULL(NULLIF(CHARINDEX('/', "Riferimento Spedizione", 1) - 1, - 1), len("Riferimento Spedizione"))
WHEN len("Riferimento Spedizione")
THEN "Riferimento Spedizione"
ELSE SUBSTRING("Riferimento Spedizione", CHARINDEX('/', "Riferimento Spedizione", 1) + 1, LEN("Riferimento Spedizione"))
END AS ordine
, "Data consegna prevista" AS cons_prev
, "Data Conferimento Hub" AS DATA_CONF
FROM IMPORT_PALLEX
WHERE "Riferimento Spedizione" IS NOT NULL
UNION ALL
SELECT DISTINCT CASE ISNULL(NULLIF(CHARINDEX('/', "Riferimento Cliente", 1) - 1, - 1), len("Riferimento Cliente"))
WHEN len("Riferimento Cliente")
THEN "Riferimento Cliente"
ELSE SUBSTRING("Riferimento Cliente", CHARINDEX('/', "Riferimento Cliente", 1) + 1, LEN("Riferimento Cliente"))
END AS ordine
, "Data consegna prevista" AS cons_prev
, "Data Conferimento Hub" AS DATA_CONF
FROM IMPORT_PALLEX
WHERE "Riferimento Spedizione" IS NOT NULL
) B
ON a.scr_numordine = ordine
OR a.scr_numordine = '00' + ordine
OR ordine = bll_numbolla
WHERE a.scr_numordine IS NOT NULL
AND (
scr_flspedito = '0'
OR scr_dtmodifica IS NULL
)
) C
WHERE scr_numordine = num_ordine_ss
AND scr_codsoc = societa
当我从sql server手动运行查询时,它可以工作,但当我把它放入预定的作业时,服务器给我一个错误:
传递给子字符串函数的长度参数无效。 [SQLSTATE 42000](错误536)。步骤失败了。
我已经看到这个错误是当你没有以正确的方式使用CHARINDEX时,但是当我手动运行查询时它会起作用!
任何人都可以帮助我吗?
问题解决了!我在查询中添加了两个游标,我将值放在游标中......它完美运行!但我不知道为什么!!!!
任何??