存储过程数据类型转换错误

用户名

我尝试执行以下SP,它给了我以下错误。

消息8114,级别16,状态5,过程测试,第55行[批处理开始第12行]将数据类型nvarchar转换为bigint时出错。

当尝试将插入值传递给值时,我尝试强制转换值,但仍然出现相同的错误。

表格包含doc_idBIGINT&line_idINT

When I set @doc_id VARCHAR(100)  = NULL and @line_id  VARCHAR(100) = NULL 

仍然打印

消息8114,级别16,状态5,过程测试,第55行[批处理开始第12行]将数据类型nvarchar转换为bigint时出错。

以下是我创建的过程。

ALTER PROCEDURE [dbo].[TEST] 

    @companycode VARCHAR(100)  = NULL,
    @division VARCHAR(100)  = NULL,
    @doc_id BIGINT  = NULL,
    --@doc_id VARCHAR(100)  = NULL,
    @doc_type_id VARCHAR(100)  = NULL,  
    @fileid VARCHAR(100)  = NULL,   
    @line_id INT  = NULL,
    --@line_id  VARCHAR(100) = NULL,
    @m3UpdateStatus VARCHAR(100)  = NULL,
    @m3VoucherNo VARCHAR(100)  = NULL,
    @posted_by VARCHAR(100)  = NULL,
    @post_priority VARCHAR(100)  = NULL,
    @samsung_doc_no VARCHAR(100)  = NULL,
    @serp_doctype VARCHAR(100)  = NULL,
    @serp_status_id VARCHAR(100)  = NULL,
    @year VARCHAR(100)  = NULL,
    @period VARCHAR(100)  = NULL,
    @transactionType VARCHAR(100)  = NULL

    AS
    BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
    print 1
    DECLARE db_cursor CURSOR FOR 
    SELECT [doc_id] --@doc_id
          ,[samsung_doc_no] --@samsung_doc_no
          ,[posted_by] --@posted_by
          ,[post_priority] --@post_priority
          ,[serp_status_id] --@serp_status_id
          ,[line_id] --@line_id
          ,[fileid] --@fileid
          ,[serp_doctype] --@serp_doctype
          ,[doc_type_id] --@doc_type_id
          ,[companycode] --@companycode
          ,[m3VoucherNo] --@m3VoucherNo
          ,[m3UpdateStatus] --@m3UpdateStatus
          ,[division] --@division
          ,[year] --@year
          ,[period] --@period
          ,[transactionType] --@transactionType
      FROM [dbo].[post]
      LEFT JOIN [dbo].[DM] ON [dbo].[DM].[BA] = [dbo].[post].[serp_doctype]
      WHERE [dbo].[DM].[DT] = '2' AND [dbo].[post].[serp_status_id] = 'TEST'
       AND  [dbo].[post].[serp_post_id] IN (4,3,2,1,0)
    print 2

    Declare @now datetime = getdate();

    OPEN db_cursor  
    print 3
    FETCH NEXT FROM db_cursor INTO @companycode,@division,@doc_id,@doc_type_id,@fileid,@line_id,@m3UpdateStatus,@m3VoucherNo,@posted_by,@post_priority,@samsung_doc_no,@serp_doctype,@serp_status_id,@year,@period,@transactionType
    print 4
    WHILE @@FETCH_STATUS = 0  
    BEGIN  
    print 5
          INSERT INTO [dbo].[post] (doc_id ,samsung_doc_no ,created_date ,process_type,posted_by,post_priority,posting_date,status_id,serp_status_id,line_id,fileid,serp_doctype,doc_type_id,companycode,m3VoucherNo,m3UpdateStatus,division,year,period,transactionType) 
          VALUES(@doc_id,@samsung_doc_no,@now,'C',@posted_by,@post_priority,@now,'L',@serp_status_id,@line_id,@fileid,@serp_doctype,@doc_type_id,@companycode,@m3VoucherNo,@m3UpdateStatus,@division,@year,@period,@transactionType)

          FETCH NEXT FROM db_cursor INTO @companycode,@division,@doc_id,@doc_type_id,@fileid,@line_id,@m3UpdateStatus,@m3VoucherNo,@posted_by,@post_priority,@samsung_doc_no,@serp_doctype,@serp_status_id,@year,@period,@transactionType
    END 
    print 6
    CLOSE db_cursor  
    DEALLOCATE db_cursor

   END
osiris_v6

变量顺序FETCH不正确。[doc_id]被保存在@companycode声明为中VARCHAR(100)您应该检查其他变量顺序,因为没有正确指定。

FETCH NEXT FROM db_cursor INTO @doc_id,@samsung_doc_no,@posted_by,@post_priority,@serp_status_id,@line_id,@fileid,@serp_doctype,@doc_type_id,@companycode,@m3VoucherNo,@m3UpdateStatus,@division,@year,@period,@transactionType

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

存储过程算术溢出错误将表达式转换为数据类型int

存储过程错误:“将数据类型nvarchar转换为uniqueidentifier时出错”

在SQL Server中将varchar数据类型转换为带存储过程错误的小数

SQL Server 2008中的存储过程中的数据类型转换错误

Firebird存储过程数据类型转换出现溢出错误

SQLCLR存储过程数据类型

存储过程-将数据类型varchar转换为float时出错

不允许从数据类型datetime到int的隐式转换嵌套存储过程

存储过程-将数据类型varchar转换为数值时出错

在存储过程中将数据类型varchar转换为bigint时出错

SQL查询将nvarchar转换为数据类型int在存储过程中出错

mysql存储过程中无法识别的数据类型错误

如何获取错误“将数据类型nvarchar转换为int时出错”。通过尝试在SQL Server存储过程中的catch语句?

在存储过程SQL Server中将varchar值'Blue color'转换为数据类型int时转换失败

pentaho中的数据类型转换错误

SQL存储过程数据类型的行列表

无法从存储过程返回varbinary数据类型

执行过程中转换数据类型时出错

PHP PDO unixODBC FreeTDS SQL Server在存储过程中“将数据类型varchar(max)转换为datetime”

数据类型转换

错误“将 varchar 数据类型转换为日期时间数据类型导致值超出范围。” 而存储日期格式是 dd-mm-yyyy

Firebase数据库数据类型转换错误

在SQL Server中以XML数据类型存储存储过程的文本

在sybase中的存储过程中存储大文本值的数据类型

将休眠数据类型映射到混合类型存储过程的输出

C#中的数据类型转换错误

SQL Server 2016 数据类型转换错误

值错误转换数组中元素的数据类型

数据类型转换导致SSIS包中的错误