Sql 插入到可诱惑文件时出错
我有一个诱人的,我试图填充,但它不工作Sql 插入到可诱惑文件时出错,sql,tsql,Sql,Tsql,我有一个诱人的,我试图填充,但它不工作 DECLARE @nBranchId int ,@tmStartDate datetime ,@tmEndDate datetime SELECT @nBranchId = 3483 ,@tmStartDate = DATEADD(DAY, -10, GETDATE()) ,@tmEndDate = GETDATE() CREATE table #tempta
DECLARE
@nBranchId int
,@tmStartDate datetime
,@tmEndDate datetime
SELECT @nBranchId = 3483
,@tmStartDate = DATEADD(DAY, -10, GETDATE())
,@tmEndDate = GETDATE()
CREATE table #temptable (
nResultsId int
,nInstrId int
,nBranchId int
,nFoldersId int
,strPaperId varchar(50)
,strPosName varchar(50)
,fQuantity float
,fRevaluationPrice float
,fHistRevaluationPrice float
,tmDate datetime
,nPrevResultsId int
)
INSERT INTO #temptable
SELECT
xpr.nResultsId
,xpr.nInstrId
,xpr.nBranchId
,xpr.nFoldersId
,xpr.strPaperId
,xpr.strPosName
,xpr.fQuantity
,xpr.fRevaluationPrice
,xpr.fHistRevaluationPrice
,xpr.tmDate
,nPrevResultsId = dbo.fnGetPrevTradeResultId(xpr.nBranchId, xpr.nInstrId, xpr.strPaperId, xpr.strPosName,xpr.tmDate, xpr.nFoldersId)
FROM dbo.XP_Results AS xpr WITH(READUNCOMMITTED)
WHERE 1 = 1
AND xpr.nBranchId = ISNULL(@nBranchId, xpr.nBranchId)
AND xpr.tmDate BETWEEN @tmStartDate AND @tmEndDate
AND xpr.nInstrId <> 18
DROP table #temptable
获取此错误:
Msg 8152,第16级,第14状态,第28行
字符串或二进制数据将被截断。
声明已终止
我在哪里错过了它?已经看了又看,但无法解决它应该通过将这两列更改为如下所示来修复。可能发生的情况是,您正在尝试将大于50个字符的varchar插入到varchar50列中
strPaperId varchar(max),
strPosName varchar(max)
应该通过将这两列更改为如下所示来修复。可能发生的情况是,您正在尝试将大于50个字符的varchar插入到varchar50列中
strPaperId varchar(max),
strPosName varchar(max)
这意味着其中一列的数据大于为临时表列声明的数据类型大小 例如,如果您有一个临时表列varchar2,那么尝试插入值“123”,您将收到该错误消息,因为我们插入的值比您插入的列的大小长。请注意,此消息可以表示任何类型
找到有问题的临时表列,并将其大小增加到实际表中的大小。这意味着其中一列的数据大于为临时表列声明的数据类型大小 例如,如果您有一个临时表列varchar2,那么尝试插入值“123”,您将收到该错误消息,因为我们插入的值比您插入的列的大小长。请注意,此消息可以表示任何类型
找到有问题的临时表列,并将其大小增加到实际表中的大小。您有不同的长度数据类型 要避免此问题,请使用语句
DECLARE
@nBranchId int
,@tmStartDate datetime
,@tmEndDate datetime
SELECT @nBranchId = 3483
,@tmStartDate = DATEADD(DAY, -10, GETDATE())
,@tmEndDate = GETDATE()
SELECT xpr.nResultsId
,xpr.nInstrId
,xpr.nBranchId
,xpr.nFoldersId
,xpr.strPaperId
,xpr.strPosName
,xpr.fQuantity
,xpr.fRevaluationPrice
,xpr.fHistRevaluationPrice
,xpr.tmDate
,nPrevResultsId = dbo.fnGetPrevTradeResultId(xpr.nBranchId, xpr.nInstrId, xpr.strPaperId, xpr.strPosName,xpr.tmDate, xpr.nFoldersId)
INTO #temptable
FROM dbo.XP_Results AS xpr WITH(READUNCOMMITTED)
WHERE 1 = 1
AND xpr.nBranchId = ISNULL(@nBranchId, xpr.nBranchId)
AND xpr.tmDate BETWEEN @tmStartDate AND @tmEndDate
AND xpr.nInstrId <> 18
DROP table #temptable
诱惑将自动创建正确的数据类型额外的好处是您不必脚本创建语句
DECLARE
@nBranchId int
,@tmStartDate datetime
,@tmEndDate datetime
SELECT @nBranchId = 3483
,@tmStartDate = DATEADD(DAY, -10, GETDATE())
,@tmEndDate = GETDATE()
SELECT xpr.nResultsId
,xpr.nInstrId
,xpr.nBranchId
,xpr.nFoldersId
,xpr.strPaperId
,xpr.strPosName
,xpr.fQuantity
,xpr.fRevaluationPrice
,xpr.fHistRevaluationPrice
,xpr.tmDate
,nPrevResultsId = dbo.fnGetPrevTradeResultId(xpr.nBranchId, xpr.nInstrId, xpr.strPaperId, xpr.strPosName,xpr.tmDate, xpr.nFoldersId)
INTO #temptable
FROM dbo.XP_Results AS xpr WITH(READUNCOMMITTED)
WHERE 1 = 1
AND xpr.nBranchId = ISNULL(@nBranchId, xpr.nBranchId)
AND xpr.tmDate BETWEEN @tmStartDate AND @tmEndDate
AND xpr.nInstrId <> 18
DROP table #temptable
您有不同的长度数据类型 要避免此问题,请使用语句
DECLARE
@nBranchId int
,@tmStartDate datetime
,@tmEndDate datetime
SELECT @nBranchId = 3483
,@tmStartDate = DATEADD(DAY, -10, GETDATE())
,@tmEndDate = GETDATE()
SELECT xpr.nResultsId
,xpr.nInstrId
,xpr.nBranchId
,xpr.nFoldersId
,xpr.strPaperId
,xpr.strPosName
,xpr.fQuantity
,xpr.fRevaluationPrice
,xpr.fHistRevaluationPrice
,xpr.tmDate
,nPrevResultsId = dbo.fnGetPrevTradeResultId(xpr.nBranchId, xpr.nInstrId, xpr.strPaperId, xpr.strPosName,xpr.tmDate, xpr.nFoldersId)
INTO #temptable
FROM dbo.XP_Results AS xpr WITH(READUNCOMMITTED)
WHERE 1 = 1
AND xpr.nBranchId = ISNULL(@nBranchId, xpr.nBranchId)
AND xpr.tmDate BETWEEN @tmStartDate AND @tmEndDate
AND xpr.nInstrId <> 18
DROP table #temptable
诱惑将自动创建正确的数据类型额外的好处是您不必脚本创建语句
DECLARE
@nBranchId int
,@tmStartDate datetime
,@tmEndDate datetime
SELECT @nBranchId = 3483
,@tmStartDate = DATEADD(DAY, -10, GETDATE())
,@tmEndDate = GETDATE()
SELECT xpr.nResultsId
,xpr.nInstrId
,xpr.nBranchId
,xpr.nFoldersId
,xpr.strPaperId
,xpr.strPosName
,xpr.fQuantity
,xpr.fRevaluationPrice
,xpr.fHistRevaluationPrice
,xpr.tmDate
,nPrevResultsId = dbo.fnGetPrevTradeResultId(xpr.nBranchId, xpr.nInstrId, xpr.strPaperId, xpr.strPosName,xpr.tmDate, xpr.nFoldersId)
INTO #temptable
FROM dbo.XP_Results AS xpr WITH(READUNCOMMITTED)
WHERE 1 = 1
AND xpr.nBranchId = ISNULL(@nBranchId, xpr.nBranchId)
AND xpr.tmDate BETWEEN @tmStartDate AND @tmEndDate
AND xpr.nInstrId <> 18
DROP table #temptable
你能发布dbo.XP\u结果的定义吗?听起来你想查看XP\u结果varchar列的长度扫描你发布dbo.XP\u结果的定义吗?听起来你想查看XP\u结果varchar列的长度谢谢。我没看见你来了。我没看到coming@krillezzz更正@克里莱兹更正了!