"ORA-00932: 不一致的数据类型:预期的NUMBER得到了NCLOB "错误,当试图使用Entity Framework保存大型xml时
我尝试使用ADO.NET Entity Framework的XMLType列将大型XML插入Oracle表中时会出现以下错误. Oracle.DataAccess.Client.OracleException Message=ORA-06550: line 5, column 22: PL/SQL: ORA-00932: inconsistent datatypes: expected NUMBER got NCLOB ORA-06550: line 4, column 1: PL/SQL: SQL Statement ignored 映射到此列的属性的数据类型是字符串. 但是,当我尝试插入一个小的XML时,它会毫无问题地保存它. 解决方案 在Oracle ODAC文档上,他们注意到当前有一个2000个字符限制,并保存到XML数据类型. " ORA -00932:不一致的数据类型:预期 - GoT nClob"错误 尝试绑定等于或等于
0 2024-04-21
编程技术问答社区
在C#中的Oracle连接-连接字符串
我目前正在尝试在C#中构建一个应用程序,并将其连接到Oracle 11G中运行的实时DB. 我有以下连接详细信息 Host IP: 10.204.1.3 Port: 1521 DB Name: PROD 我的源代码 string connString = "DATA SOURCE=10.204.1.3:1521/PROD;PERSIST SECURITY" + "INFO=True;USER ID=username; PASSWORD=userpass"; OracleConnection conn = new OracleConnection(connString); conn.Open(); 我能够使用VS使用的连接字符串在服务器资源管理器中添加一个连接,但在Conn.Open(); 中都有错误 An unhandled exception of type 'System.NullReferenceException' occurred in Oracle
0 2024-04-20
编程技术问答社区
通过代码获取文件tnsnames.ora的位置
如何在安装了Oracle客户端的计算机中获取tnsnames.ora文件的位置? 是否有Windows注册表密钥指示此文件的位置? 解决方案 几年前我遇到了同样的问题. 那时我必须支持Oracle 9和10,因此代码只能处理这些版本,但也许可以使您免于一些研究. 这个想法是: 搜索注册表以确定Oracle客户端版本 尝试找到Oracle_home 终于从家里获得TNSNAME public enum OracleVersion { Oracle9, Oracle10, Oracle0 }; private OracleVersion GetOracleVersion() { RegistryKey rgkLM = Registry.LocalMachine; RegistryKey rgkAllHome = rgkLM.OpenSubKey(@"SOFTWARE\ORACLE\ALL_HOMES"); /
0 2024-04-19
编程技术问答社区
OracleConnection.Open抛出ORA-12541 TNS没有监听器
所以我通过C#连接到外部服务器.我刚刚在我的计算机上安装了 oracle 11g 客户端:阅读了许多博客/问题后,我发现本文很有用: -12541-tns-no-listener.html 这是正确的吗?我什么都做不了. DBA必须编辑 lister.ora 文件? 我的 tnsnames.ora 看起来像这样: TestingConnect= (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = TestHostName.us.local)(PORT = 1523)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = TEST) ) ) 它给我带来了错误: Oracle.DataAccess.Client.OracleConnection connection = new Oracle.Dat
0 2024-04-18
编程技术问答社区
ODP.NET错误 无法找到所需的.Net框架数据提供者
我正在尝试使用Oracle 11G Express和.NET 4.0框架开发ASP.NET MVC 4.0应用程序.我可以使用ODP.NET提供商连接到数据库,还可以针对数据库生成我的EDMX.我无法做的是使用实体框架查询基础数据库.使用ConnectInsTring Visual Studio生成的ConnectTring Visual Studio实例化我的DBContext时,我会收到以下错误: 无法找到所需的.NET框架数据提供商.它可能不会安装 但是,它是因为 而安装的 我可以在GAC中看到DLL. 在Machine.config中提到. 我的项目引用了它. 我实际上使用它来从数据库生成我的EDMX. 我已经验证了我在无处不在的正确版本(4.112.3.0) 我在卡西尼(Cassini)上本地运行代码,而我的硬件是32位体系结构,所以我假设我只能使用32位DLL,所以这不是架构问题. 代码的特定位就是这样: public class M
0 2024-04-18
编程技术问答社区
当记录被更新时,ExecuteNonQuery()在Update中返回-1
我已经验证了我的方法/甲骨文过程是否正常工作,但是在我的C#中,我总是从executenonquery()返回-1.因此,以下布尔始终是错误的.我们仅在DB(Oracle)中使用触发器进行插入语句.我需要触发器以进行更新语句吗? 有什么建议为什么会发生?它肯定会更新一个记录: public bool ChangePassword(long UserId, string NewPassword) { int rcds = 0; using (OracleConnection dbConn = new OracleConnection(dbConnString)) using (OracleCommand dbCmd = new OracleCommand("PKG_USER.CHANGE_PASSWORD", dbConn)) { try {
0 2024-04-15
编程技术问答社区
无法加载文件或程序集 'Oracle.DataAccess错误
我正在使用C#构建ASP.NET应用程序,我想连接到Oracle数据库. 在我的64位Microsoft Window Server 2008计算机上的应用程序中,我添加了对Oracle.DataAccess的引用. 我还在计算机上安装了ODAC(Oracle数据访问组件) 和Oracle.DataAccess.dll也存在于此路径上 c:\ windows \ microsoft.net \ assembly \ gac_64 \ oracle.dataaccess 但是当我尝试连接时,我会遇到以下错误: 无法加载文件或汇编'oracle.dataAccess,版本= 4.112.3.0,culture =中性,publicKeyToken = 89b483f429c47342'或其依赖项之一.系统找不到指定的文件. 据我所知, 解决方案 Oracle.DataAccess组装仅适用于32位,我也有64位的问题,这确实不起作用.我的解决方案是从GAC中卸下64
0 2024-04-13
编程技术问答社区
如何调用返回参考游标的Oracle存储过程
我正在尝试调用返回参考光标的Oracle存储过程,我需要从该返回的数据中生成树视图.我是新来的,我有两个问题. 第一个问题是我无法称呼该过程.我遇到了此错误:"错误的数字或类型的参数类型 我的第二个问题是,当此过程返回ref光标值时,我不明白我将如何获得该数据?该表中有更多的5000个记录,我没有获得该数据,而是REF光标值.有人可以解释一下如何使用参考光标值获得该数据.我没有甲骨文的经验. 这是Oracle中的过程定义: CREATE OR REPLACE PROCEDURE SAD.object_hierarchy (nAppId IN NUMBER, nParentId IN NUMBER DEFAULT -1, o_cRefCursor OUT SYS_REFCURSOR) IS BEGIN IF NOT o_cRefCursor%ISOPEN THEN OPEN o_cRefCursor FOR SELECT h.PA
0 2024-04-13
编程技术问答社区
odp.net能否将一个参数传递给一个布尔型pl/sql参数?
是否可以在PL/SQL存储过程中正确将OracleParameter正确传递到布尔参数? 解决方案 您无法在SQL中使用布尔参数.因此,调用一个存储过程,该过程采用或返回布尔值在SQL中无法使用.使用PL/SQL块内的这样的过程没有问题. 添加了jcallico答案: 我使用以下解决方法绕过此限制: 使用匿名块包装函数调用. 返回包含1或0的输出变量. 读取输出变量并将其施放给布尔值. 这是一些示例代码: using (var connection = new OracleConnection("")) { var command = new OracleCommand(); command.Connection = connection; command.CommandText = "declare v_bool boolean;" + "begi
0 2024-04-12
编程技术问答社区
如何用Entity Framework调用oracle包内的存储过程?
我在Oracle 11g中有一个包裹,如下: CREATE OR REPLACE PACKAGE "HRS.PKG_TRAINING_SP" as TYPE T_CURSOR IS REF CURSOR; procedure GETPERSONNELTRAINIGLIST( personnel_Id_in in string, base_date_in in string, is_current_in in number, lst OUT T_CURSOR ); end; 如何使用Entity Framework(Code-First)执行上面的过程软件包(GETPERSONNELTRAINIGLIST)? 注意:我正在使用实体框架6.0(code-first)和devart EF Provider for Oracle. 更新: 我正在使用以下代码: var param1 = new Orac
0 2024-04-12
编程技术问答社区
ODP.NET Oracle.ManagedDataAccess导致ORA-12537网络会话结束的文件
概述 我想用orcale替换oracle.dataaccess.托管 dataAccess,但是用后者打开一个连接,将 ora-ora-ora-ora-ora-12537网络会话结束.例外. 异常消息/堆栈跟踪 {oracleinternal.network.networkexception(0x00000030f9): ora-ora-12537 :netzwerksession:dateiende atoracleinternal.network.readerstream.read(orabuf ob) 在oracleinternal.ttc.orabufreader.getDatafromnetwork() 在oracleinternal.ttc.orabufreader.read(布尔bignoredata) 在oracleinternal.ttc.marshallingengine.unmarshalub1(布尔bignoredata) atracleintern
0 2024-04-11
编程技术问答社区
检查选择查询中是否有零行
我的C程序具有嵌入式SQL查询.该程序在Windows上运行,并查询Oracle数据库. 查询类似于Exec SQL Select ... 我需要添加此处检查以了解查询是否返回零行. 基本上,我想设置一个本地阀门来知道我的查询没有返回行, 相应处理此条件. 我该如何添加.我知道可以使用这种陈述.但是我没有得到 我如何在嵌入式sql中使用它. 感谢您的任何帮助. 解决方案 使用SQLCA struct EXEC SQL include "sqlca.h" #define NO_ROWS_FOUND (sqlca.sqlcode==1403) EXEC SQL BEGIN DECLARE SECTION; int val=0; short ind=0; EXEC SQL END DECLARE SECTION; EXEC SQL select value int :val :ind from mytable w
2 2024-04-10
编程技术问答社区
在jdbc中创建一个随机blob并将其写入oracle中
我想在java [在内存]中创建许多斑点,然后将其写入Oracle表. 我想要的是blob [其中的位]是随机的或sudo随机的,因此Oracle将斑点存储到表中时将无法进行大量的预选. 之类的东西 for(1..1000000) { blob = createRandomBlob(sizeOfBlob); sqlText ="INSERT INTO test_blob (id, blob) VALUES(i, blob)"; stmt.executeUpdate(sqlText); } 有人可以指出我可以用什么Java API来创建这种斑点[在内存而不是在磁盘上]并将其写入DB? ? 谢谢 解决方案 我认为这应该做技巧 byte[] data = new byte[10000]; fRandom.nextBytes(data); try { SerialBlob fSerialBlob = new Seri
2 2024-04-01
编程技术问答社区
Oracle DBMS_LOB:在PLSQL块中多次使用DBMS_LOB.convertToBlob
当我尝试在同一PLSQL块中多次使用DBMS_LOB.convertToBlob过程时,仅第一个执行按预期工作.所有其他执行都会产生空白.这是一个示例: DECLARE v_temp1 varchar2(32767) := 'absd'; V_temp1_blob BLOB; V_temp2 varchar2(32767) := 'efghi'; V_temp2_blob BLOB; v_in integer := 1; v_out integer := 1; v_lang integer := 0; v_warning integer := 0; BEGIN DBMS_LOB.createTemporary (V_temp1_blob, TRUE); DBMS_LOB.convertToBlob(V_temp1_blob, V_temp1, DBMS_LOB.LOBMAXSIZE, v_in, v_out, DBMS_LOB.DEFAU
6 2024-04-01
编程技术问答社区
从Oracle SQL中的blob中提取XML标签之间的值
这些数据存在于我的admintxnunauthdata表中的blob列(" msg")中 00000024VODAojas yadnik 111 我想在111 之间显示" 111" 和其他一些来自单个查询中不同表的值 select mbl.idbiller as BILLNUMBER, mbl.billernickname AS BILLERNICKNAME, mts.idchanneluser AS USERNAME, adm.NU
0 2024-04-01
编程技术问答社区
从表中导出一个BLOB图像
我在Oracle 11g R2中有表格,称为Person_Image,具有ID(数字)和图像(BLOB)字段.现在,不使用该应用程序,我需要导出多个斑点. 我怎样才能做到这一点?我们有任何工具/实用程序吗? 例子真的会帮助我. 解决方案 sqldevelveber可以做到: 我只是在版本4.0.3中尝试过它,尽管界面有点不直觉,但效果很好.我最终得到了很多称为TABLE64c49834-014d-1000-8494-c0a8b247f35d.ldr而不是david.jpg的文件,但是如果您想重命名,则使用Shell脚本处理加载程序数据文件应该相对简单.
0 2024-04-01
编程技术问答社区
如何通过SQL*Plus在Oracle 11g数据库中插入Blob数据类型值
我已经创建了一个带有blob数据类型的表,但我不知道如何在表中插入值或使用sql*plus查看表内容.请帮助我. 解决方案 这取决于您要将哪种数据放入斑点中.让我们考虑一下桌子: create table b1(id number , b blob); 如果您的数据表示为十六进制,则应使用to_blob函数 insert into b1 values(1,to_blob('FF3311121212EE3a')); sqlplus还显示斑点为十六进制 select * from b1; ----- ----------------------------------- ID B ----- ----------------------------------- 1 FF3311121212EE3A 请在上使用
0 2024-04-01
编程技术问答社区
java.sql.SQLException: ORA-01461: 只能为插入到一个LONG列而绑定一个LONG值
我使用的是一个简单的接口(在JSF 1.2和Rich Faces 3.3.2,Oracle 11G R1中),让用户选择图片rich:fileupload并保存在表中. 作为测试,我创建了下表. CREATE TABLE TEST ( MIME_TYPE VARCHAR2 (1000), PHOTO BLOB, STUDENT_ID NUMBER NOT NULL ) 代码段将图片保存到斑点字段如下. //......From the uploadFile Listener public void listener(UploadEvent event) throws Exception { ... item = event.getUploadItem(); ... StudentPhotoDAO dao = new StudentPhotoDAO(); dao.storePhoto(item.getData(),item.getContentType()
0 2024-04-01
编程技术问答社区
从blob中反序列化java对象
首先,我很抱歉,我要问一组愚蠢的问题.我根本不知道Java,我不知道我们是否可以问这样的问题. 如果不是 - 删除我的主题. Oracle中有一个存储斑点的桌子.它是二进制的,我能够解码它,输出看起来像 ¬í sr /com.epam.insure.credentialing.forms.StorageBeanÀÓ ¯w/§ L variablest Ljava/util/Map;xpsr java.util.HashMapÚÁÃ`Ñ F loadFactorI thresholdxp?@ w t $_hasCompletedt t $_wf_progresssr java.lang.Integerâ ¤÷‡8 I valuexr java.lang.Number†¬•”à‹ xp t $_wf_statussq ~ t $_form_instance_idsr java.lang.Long;‹äÌ#ß J value
0 2024-04-01
编程技术问答社区
在ORA-06502之后,如何在Oracle 11g PL/SQL内部将VARCHAR2转换为BLOB
我有一个函数,可以计算大字符串的哈希值!首先,我写了一个光标T1_CUT,其中可以包括选定语句的可变计数,例如: SELECT T1.COL1||T1.COL2||...||T1.COLn FROM T1 WHERE id=documentid SELECT T2.COL1||T2.COL2||...||T2.COLn FROM T2 WHERE id=documentid ... SELECT Tn.COL1||Tn.COL2||...||Tn.COLn FROM Tn WHERE id=documentid 每个选择可以包含一个或多个行.因此,我将每个选择中的所有值都在每个选择中的行中加入,并在一个大字符串v_result中使用varchar2类型(32767)中的所有值.之后,我使用MD5获得了此大字符串的哈希值(s_hash_result).它可以正常工作大约8个月,但是几天前我有ORA-06502(毫不奇怪).这意味着我的最终大字符串具有超过32k的符号(我们使用1
6 2024-04-01
编程技术问答社区