Sql /李> [产品].[dbo].[CurrentOnHand] 存储VARCHAR(4) 我不相信NCHAR是解决方案,而不是与其他一些变化巧合。我会通过使用探查器查看在每种情况下传递的不同查询来进行测试,然后查看每个查询的查询计划。我也不相信NCHAR
/李>Sql /李> [产品].[dbo].[CurrentOnHand] 存储VARCHAR(4) 我不相信NCHAR是解决方案,而不是与其他一些变化巧合。我会通过使用探查器查看在每种情况下传递的不同查询来进行测试,然后查看每个查询的查询计划。我也不相信NCHAR,sql,tsql,variables,char,varchar,Sql,Tsql,Variables,Char,Varchar,/李> [产品].[dbo].[CurrentOnHand] 存储VARCHAR(4) 我不相信NCHAR是解决方案,而不是与其他一些变化巧合。我会通过使用探查器查看在每种情况下传递的不同查询来进行测试,然后查看每个查询的查询计划。我也不相信NCHAR是真正的解决方案,但实际上除了变量的数据类型之外,我没有做任何其他更改。我将研究如何使用探查器,看看这是否对某些内容有帮助。表[LP].[dbo].[scan\u file]aa中的scan\u store字段的类型是什么。这是所有其他类型都应
- 存储VARCHAR(4)
我不相信NCHAR是解决方案,而不是与其他一些变化巧合。我会通过使用探查器查看在每种情况下传递的不同查询来进行测试,然后查看每个查询的查询计划。我也不相信NCHAR是真正的解决方案,但实际上除了变量的数据类型之外,我没有做任何其他更改。我将研究如何使用探查器,看看这是否对某些内容有帮助。表[LP].[dbo].[scan\u file]aa中的scan\u store字段的类型是什么。这是所有其他类型都应该是的。此外,对于测试,请使用3个字符的字符变量,如“333”而不是“1”或“12”。如果行为发生变化,则需要将每个比较转换为正确的字符串填充类型。换句话说,“12”和“1”不是“1”。这就是为什么我很少使用char和nchar。它经常让你感到沮丧。另外,NChar实际上是2个字节,在进行比较时会导致其他数学问题。SSRS中的类型定义在rs中的定义方式可能会影响问题的行为。我强烈建议您将参数设置为存储的proc字符串,然后强制sql代码强制转换为NChar或Char,以便外部用户始终传递字符串类型。字符串类型定义得很好。LP.dbo.scan_文件中的scan_存储的类型是CHAR(3)。所有的商店号码都是3位数,所以我一直使用333、123等等。
ALTER PROC [dbo].[Inventory_pr_rpt_Scanfile_InvalidColorSize]
(
@STORE CHAR(3)
)
AS
--set statistics io on
/** TEST **/
--DECLARE @STORE CHAR(3)
--SET @STORE = '180'
/** Drop existing temp table **/
IF OBJECT_ID('tempdb..#TEMP_ScanBadData') IS NOT NULL
DROP TABLE #TEMP_ScanBadData
IF OBJECT_ID('tempdb..#TEMP_ScanDiscrepancy') IS NOT NULL
DROP TABLE #TEMP_ScanDiscrepancy
IF OBJECT_ID('tempdb..#TEMP_ScanFinalReport') IS NOT NULL
DROP TABLE #TEMP_ScanFinalReport
CREATE TABLE #TEMP_ScanBadData (scan_store char(3)
,scan_sku char(45)
,scan_qty int
,errormessage varchar(255))
CREATE TABLE #TEMP_ScanFinalReport(scan_store char(3)
,scan_sku char(45)
,scan_qty int
,storeOH_qty int
,errormessage varchar(255))
CREATE TABLE #TEMP_ScanDiscrepancy(scan_store char(3)
,scan_sku char(45)
,scan_qty int
,storeOH_qty int
,errormessage varchar(255))
/** Does SKU exist in our system? (Valid color/size/style check) **/
INSERT INTO #TEMP_ScanBadData (scan_store
,scan_sku
,scan_qty
,errormessage)
SELECT scan_store
,scan_sku
,scan_qty
,'SKU does not exist.' as errormessage
FROM [LP].[dbo].[scan_file]
WHERE scan_sku NOT IN (SELECT ItemID
FROM [Product].[dbo].[MasterSKU])
AND scan_store = @STORE
/** Does scanned SKU exist in store on hand? **/
INSERT INTO #TEMP_ScanDiscrepancy (scan_store
,scan_sku
,scan_qty
,storeOH_qty
,errormessage)
SELECT aa.scan_store
,aa.scan_sku
,aa.scan_qty
,'' as storeOH_qty
,'Scanned SKU missing in store OH.' as errormessage
FROM [LP].[dbo].[scan_file] aa
FULL OUTER JOIN [Product].[dbo].[CurrentOnHand] bb
ON aa.scan_sku = bb.ItemID
and aa.scan_store = bb.Store
WHERE bb.ItemID IS NULL
AND aa.scan_store = @STORE
and bb.Store = @STORE
/** Were any store OH SKU's missed in scan? **/
INSERT INTO #TEMP_ScanDiscrepancy (scan_store
,scan_sku
,scan_qty
,storeOH_qty
,errormessage)
SELECT aa.Store as 'scan_store'
,aa.ItemId as 'scan_sku'
,aa.OnHandU as 'scan_qty'
,'' as storeOH_qty
,'SKU was not scanned.' as errormessage
FROM [Product].[dbo].[CurrentOnHand] aa
LEFT JOIN [LP].[dbo].[scan_file] bb
ON aa.ItemID = bb.scan_sku
and aa.Store = bb.scan_store
WHERE bb.scan_sku IS NULL
AND aa.Store = @STORE
and bb.scan_store = @STORE
/** What are the qty differences between scanned and OH? **/
INSERT INTO #TEMP_ScanDiscrepancy (scan_store
,scan_sku
,scan_qty
,storeOH_qty
,errormessage)
SELECT aa.scan_store
,aa.scan_sku
,aa.scan_qty
,bb.OnHandU as 'storeOH_qty'
,'QTY does not match between scan and store OH.' as errormessage
FROM [LP].[dbo].[scan_file] aa
JOIN [Product].[dbo].[CurrentOnHand] bb
ON bb.ItemId = aa.scan_sku
AND aa.scan_store = bb.Store
WHERE bb.Store = @STORE
AND bb.OnHandU <> aa.scan_qty
AND aa.scan_store = @STORE
INSERT INTO #TEMP_ScanFinalReport (scan_store
,scan_sku
,scan_qty
,storeOH_qty
,errormessage)
SELECT scan_store
,scan_sku
,scan_qty
,storeOH_qty
,errormessage
FROM #TEMP_ScanDiscrepancy
INSERT INTO #TEMP_ScanFinalReport (scan_store
,scan_sku
,scan_qty
,storeOH_qty
,errormessage)
SELECT scan_store
,scan_sku
,scan_qty
,'' as storeOH_qty
,errormessage
FROM #TEMP_ScanBadData
SELECT *
FROM #TEMP_ScanFinalReport