首页 新闻 会员 周边

ORA-01745: 无效的主机/绑定变量名

0
悬赏园豆:15 [待解决问题]

string sql = " insert into TB_PROCURECATALOG(PROCURECATALOGID,PRODUCTID,PRODUCTNAME,MEDICINEMODELNAME,OUTLOOKC,FACTOR,UNIT,MATERIAL,COMPANYNAME_SC,ISYBDRUG,ISNHDRUG,ISDJDRUG,HOSPITALNUMBER,ISSUBJOIN,GOODSSORT,MEMO) values(@0,@1,@2,@3,@4,@5,@6,@7,@8,@9,@10,@11,@12.@13,@14,@15) ";
int c = item.db.ExecuteNonQuery(sql, new object[] {
str[0].ToString(), str[1].ToString(),
str[2].ToString(), str[3].ToString(),
str[4].ToString(), str[5].ToString(),
str[6].ToString(), str[7].ToString(),
str[8].ToString(), str[9].ToString(),
str[10].ToString(), str[11].ToString(),
str[12].ToString(), str[13].ToString(),
str[14].ToString(), str[15].ToString(),
});

数据库里试都能成功

灬丶的主页 灬丶 | 初学一级 | 园豆:2
提问于:2016-08-30 14:32
< >
分享
所有回答(3)
0

不是这样做的,你需要使用sql parameter 类绑定参数

 

SqlParameter[]
 paras = new SqlParameter[]
 { new SqlParameter("@name","Pudding"),new SqlParameter("@ID","1")
 };

cmd.Parameters.AddRange(paras);

 

悦光阴 | 园豆:2251 (老鸟四级) | 2016-08-30 14:44

 他那是Oracle吧?

支持(0) 反对(0) 顾晓北 | 园豆:10844 (专家六级) | 2016-08-30 14:47
0

ora,是Oracle?Oracle的变量定义我记得不是?么还是:么?怎么成@了?

顾晓北 | 园豆:10844 (专家六级) | 2016-08-30 14:46

看清楚@12.@13中间应该是,

支持(0) 反对(0) 顾晓北 | 园豆:10844 (专家六级) | 2016-08-30 14:49

@顾晓北: Oracle 我一般都简写为Ora 

SQL里 ,一个@标示临时变量 @@标示全局变量  

-------------

sqlplus里

ORACLE还提供了自己定义变量 包括define 变量和绑定变量
sql > define x
SQL> define x='abc'
要引用这个变量,需要使用and符号,假如是字符串,需要加上单引号。
SQL> select '&x' from dual;
原值 1: select '&x' from dual
新值 1: select 'abc' from dual

绑定变量
要想使用绑定变量,需要先定义它
variable x varchar2(10)
begin
:x := 'hello';
end;
/
print :x
define 变量总是被sqlplus 扩展的字符串,而declared变量可以被SQL和PLSQL作为真正的绑定变量使用

支持(0) 反对(0) 小刺猬001 | 园豆:660 (小虾三级) | 2016-09-03 13:11
0

ToString()都当成字符串了,数据类型不对,绑定出错了吧

2012 | 园豆:21230 (高人七级) | 2016-08-31 09:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册