带有输出参数的Oracle客户端问题 [英] Oracle client problem with output parameter

查看:123
本文介绍了带有输出参数的Oracle客户端问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好,

i有Oracle Client的问题。

i有oracle数据库10g,我已经安装了oracle客户端12c所有应用程序都运行正常,但其中一个应用程序使用下面的代码用于登录,但是当执行命令时,两个输出参数返回不完整的数据,它们返回正好一半的数据长度。



*我有windows server 2008 r2。

* iis 7.

* Oracle客户端64位。

*框架4下的解决方案。



Hello,
i have an issue with Oracle Client.
i have oracle database 10g, i have installed oracle client 12c all applications works fine, but one of the application uses below code for login, but when executing the command the two output parameters return incomplete data, they return exactly half data length.

* i have windows server 2008 r2.
* iis 7.
* Oracle Client 64 bit.
* Solution under Framework 4.

cmd = new OracleCommand("<SP_NAME>", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("USERNAME", OracleType.VarChar).Value = <username>;
            cmd.Parameters.Add("PASSWORD", OracleType.VarChar).Value = <password>;

            OracleParameter p1 = new OracleParameter("LOGIN_STATUS", OracleType.Number, 1);
            p1.Direction = ParameterDirection.Output;


            OracleParameter p2 = new OracleParameter("MESSAGE", OracleType.VarChar, 4000);
            p2.Direction = ParameterDirection.Output;


            OracleParameter p3 = new OracleParameter("SES_ID", OracleType.Char, 16);
            p3.Direction = ParameterDirection.Output;

            cmd.Parameters.Add(p1);
            cmd.Parameters.Add(p2);
            cmd.Parameters.Add(p3);

            OpenConnection();
            cmd.ExecuteNonQuery();

            string[] result = { "", "", "", "", "" };

            result[0] = cmd.Parameters["LOGIN_STATUS"].Value.ToString();
            result[1] = cmd.Parameters["MESSAGE"].Value.ToString();
            result[2] = cmd.Parameters["SES_ID"].Value.ToString();





此应用程序在旧服务器上正常工作。

请任何建议。



This application works fine on old server.
please any advice.

推荐答案

设置

OracleParameter(MESSAGE,OracleType.Char,4000);





和执行后

结果[1] = cmd.Parameters [MESSAGE]。Value.ToString ()。修剪();



或安装11客户端...
set
OracleParameter("MESSAGE", OracleType.Char, 4000);


and after execute
result[1] = cmd.Parameters["MESSAGE"].Value.ToString().Trim();

or install 11 client...


不再使用System.Data.Oracle.Client(使用12c)客户端)。

您可以使用Oracle.DataAccess,它是oracle客户端安装的一部分

或oracle.ManagedDataAccess。
Don't use the System.Data.Oracle.Client anymore (with 12c client).
You can use the Oracle.DataAccess which is part of oracle client installation
or oracle.ManagedDataAccess instead.


这篇关于带有输出参数的Oracle客户端问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆