错误:ORA-00932: 不一致的数据类型: 要求 - 得到的却是 BLOB
源码: StringBuilder strSql = new StringBuilder();
strSql.Append("SELECT UserID FROM Accounts_Users WHERE Password= :Password");
OracleParameter[] parameters = {
new OracleParameter("Password", OracleType.Blob,EncryptedPassword.Length)};
parameters[0].Value = EncryptedPassword;
password 为blob类型。
EncryptedPassword 为byte[]类型.
源码: StringBuilder strSql = new StringBuilder();
strSql.Append("SELECT UserID FROM Accounts_Users WHERE Password= :Password");
OracleParameter[] parameters = {
new OracleParameter("Password", OracleType.Blob,EncryptedPassword.Length)};
parameters[0].Value = EncryptedPassword;
password 为blob类型。
EncryptedPassword 为byte[]类型.
解决方案 »
- 索引失效了吗?
- 关于通信通道的文件结束
- 对于一个表T2,想知道其中包含了多少个 blocks,用了两种方法,得到的结果却不一样,
- 数据库导入.dmb问题
- 存储过程返回临时表,大家帮忙看看~
- 求救,oracle头疼问题 熬一个晚上了 没有解决(在线等)
- 请问下,这样在Pl/SQL中没有显示是什么原因呀
- 请问ORA-01113: file 1 needs media recovery ,ORA-01110: data file 1: 'D:\BACKUPDB\SYSTEM01.DBF' 是什么错误,怎么解决?
- 紧急,为什么我的Oracle连接没有办法被别人连接?
- 游标、参数、传递
- SQL%NOTFOUND是什么?是ORACLE的全局变量吗?
- 可以 \ 如何 把 用户 a的包 f 转向执行 用户 b 的包 f
你可以试试,具体的我也不是很清楚
我在做MD5加密时用到的
MD5加密出来的就是BLOB型,不过我们需要加密后的数据是VARCHAR型
所以需要这样转换下
CREATE OR REPLACE FUNCTION CHINA.MD5(
passwd IN VARCHAR2)
RETURN VARCHAR2
IS
retval varchar2(32);
BEGIN
retval := utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => passwd)) ;
RETURN retval;
END;这上我C#里用的语句
OracleConnection con = new OracleConnection(Session["oracle_con"].ToString());
con.Open();
string select = "SELECT ID,NM from TBwhere USER_ID='" + UserName + "' and USER_PSWD=md5('" + Password + "')";
OracleDataAdapter da = new OracleDataAdapter(select, con);
DataSet ds = new DataSet();
da.Fill(ds);
CREATE OR REPLACE FUNCTION CHINA.MD5(
passwd IN VARCHAR2)
RETURN VARCHAR2
IS
retval varchar2(32);
BEGIN
retval := utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => passwd)) ;
RETURN retval;
END;这里面你把utl_raw.cast_to_raw去掉再比较看看(把你页面上的密码代入)