加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

Oracle db给出了ORA-01722好像没有任何缘故起因

发布时间:2021-01-10 02:47:53 所属栏目:站长百科 来源:网络整理
导读:我正在实行将一个Oracle数据库与ado.net一路行使,这证明是一种疾苦的经验.我行使Oracle Client(Oracle.Data名称空间). 以下查询从查询??窗口运行正常: 更新PRINT_ARGUMENT SET VALUE =’已启动’ WHERE REQUEST_ID = 1 AND KEYWORD ='{7D066C95-D4D8-441b-A

我正在实行将一个Oracle数据库与ado.net一路行使,这证明是一种疾苦的经验.我行使Oracle Client(Oracle.Data名称空间).

以下查询从查询??窗口运行正常:

更新PRINT_ARGUMENT
SET VALUE =’已启动’
WHERE REQUEST_ID = 1 AND KEYWORD ='{7D066C95-D4D8-441b-AC26-0F4C292A2BE3}’

当我建设一个OracleCommand时,ORA-01722也会呈现同样的环境.我无法弄清晰为什么.

var cmd = cnx.CreateCommand();
cmd.CommandText = @"
UPDATE PRINT_ARGUMENT
SET VALUE = :value 
WHERE REQUEST_ID = :requestID AND KEYWORD = :key";

cmd.Parameters.Add(new OracleParameter(“requestID”,(long)1);
cmd.Parameters.Add(new OracleParameter(“key”,“{7D066C95-D4D8-441b-AC26-0F4C292A2BE3}”);
cmd.Parameters.Add(new OracleParameter(“value”,“Started”);

cnx.Open();
try {int affected = cnx.ExecuteNonQuery(); }
终于{cnx.Close(); }

当我在调试器中搜查呼吁时,参数好像已映射到正确的范例:requestID具有OracleDbType.Int64,键和值都是OracleDbType.Varchar2.参数的值也是正确的.

当你思量我行使沟通的要领在完全沟通的列(requestID,keyword,value)上运行其他查询时,这乃至会变得越发稀疏 – 而且它们在没有打嗝的环境下事变.

对付记录,列范例是requestID NUMBER(10,0); key VARCHAR2(30);值VARCHAR2(2000).

据Oracle称,ORA-01722’无效数字’暗示字符串无法转换为数字.我的字符串值都不是数字,为它们建设的OracleParameters都不是数字,也不是

办理要领

因为您行使的是定名参数,因此必需汇报Oracle客户端.不然,您的参数会被夹杂(键被赋值为:value):

OracleParameter parameter = new OracleParameter("requestID",(long)1);
parameter.BindByName = true;
cmd.Parameters.Add(parameter);

这是一种稀疏而不测的举动,但究竟就是云云.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读