Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 插入到可诱惑文件时出错_Sql_Tsql - Fatal编程技术网

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更正@克里莱兹更正了!