首页 > 解决方案 > 功能在 2016 服务器中不起作用,但在 2012 服务器中起作用

问题描述

下面的函数 StsExpl.MemoId 仅获取 4 位的值,但在 DB 中存储了 8 位

ADD_EXPLANATION_SQL 是声明序列的查询

ADD_EXPLANATION_SQL As String = "DECLARE  next_seq NUMBER;
BEGIN 
SELECT STATUSEXPLANATIONS_SEQ.NEXTVAL INTO next_seq FROM dual;
INSERT INTO STATUSEXPLANATIONS (MEMOID,CSFNTYPE,EXPLANATION,PROBLEMCODE,CREATE_DATE,CREATE_BY,LAST_UPDATE_DATE,LAST_UPDATE_BY)  
VALUES(next_seq,:csfn_type,:explanation,:problem_code,SYSDATE,:user_id,SYSDATE,:user_id);
:memo_id := '' || next_seq;
END;"

      Public Shared Sub Add(ByVal StsExpl As StatusExplanation)
            Dim cmd As OracleCommand = Nothing
            Try
                cmd = New OracleCommand()
                cmd.CommandText = ADD_EXPLANATION_SQL
                cmd.CommandType = CommandType.Text

                cmd.Parameters.AddWithValue("csfn_type", StsExpl.CsfnType).DbType = DbType.AnsiString

                cmd.Parameters.AddWithValue("memo_id", "AAAAAAAAAAAA").DbType = DbType.AnsiString
                cmd.Parameters("memo_id").Direction = ParameterDirection.InputOutput

                cmd.Parameters.AddWithValue("explanation", StsExpl.Explanation).DbType = DbType.AnsiString
                cmd.Parameters.AddWithValue("problem_code", DbUtilities.En(StsExpl.ProblemCode)).DbType = DbType.AnsiString
                cmd.Parameters.AddWithValue("user_id", StsExpl.CreatedBy).DbType = DbType.AnsiString

                OracleCommandProcessor.ExecuteNonQuery(cmd, "ConnectString")

                StsExpl.MemoId = cmd.Parameters("memo_id").Value

标签: .netvb.netoracle

解决方案


推荐阅读