Oracle数据库连接C#程序,调用存储过程,向数据库添加记录
存储过程如下:
create or replace procedure proc_addUser
(
username varchar2, --用户名
userpwd varchar2, --密码
empid number, --员工ID
levid number --用户等级ID
)
is
begin --插入一条新数据
insert into Userss (username, userpwd, empid, levid)
values (username, userpwd, empid, levid);
end;
------------------------------
pl\sql develop调用没有问题,如下:
exec proc_addUser ('aa','123','1','1');
PL/SQL procedure successfully completed --提示调用存储过程调用成功
------------------------------
C#程序:
using (OracleConnection conn = new OracleConnection(connstr)){
OracleCommand command = new OracleCommand("proc_addUser", conn); OracleParameter[] param = new OracleParameter[4];
//定义参数组成员(与存储过程参数对应,且输入无误)
param[0] = new OracleParameter("username",OracleType.VarChar);
param[1] = new OracleParameter("userpwd", OracleType.VarChar);
param[2] = new OracleParameter("empid", OracleType.Number);
param[3] = new OracleParameter("levid", OracleType.Number);
//参数成员赋值
param[0].Value = "bb";
param[1].Value = "123";
param[2].Value = "2";
param[3].Value = "2";
//带入参数组
command.Parameters.AddRange(param); conn.Open();
command.ExecuteNonQuery();//错误:ORA-01036: 非法的变量名/编号\n
conn.Close();
}
------------------------------
使用过无效的办法如下:
①参数前添加@符号或是:符号,无效
②改变参数为输入,无效,如下
param[0].Direction = ParameterDirection.Input;
③用户为同一个用户,不存在访问权限问题
------------------------------
小弟已经为该问题纠结了一天了,希望各位高手能帮帮忙,告诉我错在哪里?
存储过程如下:
create or replace procedure proc_addUser
(
username varchar2, --用户名
userpwd varchar2, --密码
empid number, --员工ID
levid number --用户等级ID
)
is
begin --插入一条新数据
insert into Userss (username, userpwd, empid, levid)
values (username, userpwd, empid, levid);
end;
------------------------------
pl\sql develop调用没有问题,如下:
exec proc_addUser ('aa','123','1','1');
PL/SQL procedure successfully completed --提示调用存储过程调用成功
------------------------------
C#程序:
using (OracleConnection conn = new OracleConnection(connstr)){
OracleCommand command = new OracleCommand("proc_addUser", conn); OracleParameter[] param = new OracleParameter[4];
//定义参数组成员(与存储过程参数对应,且输入无误)
param[0] = new OracleParameter("username",OracleType.VarChar);
param[1] = new OracleParameter("userpwd", OracleType.VarChar);
param[2] = new OracleParameter("empid", OracleType.Number);
param[3] = new OracleParameter("levid", OracleType.Number);
//参数成员赋值
param[0].Value = "bb";
param[1].Value = "123";
param[2].Value = "2";
param[3].Value = "2";
//带入参数组
command.Parameters.AddRange(param); conn.Open();
command.ExecuteNonQuery();//错误:ORA-01036: 非法的变量名/编号\n
conn.Close();
}
------------------------------
使用过无效的办法如下:
①参数前添加@符号或是:符号,无效
②改变参数为输入,无效,如下
param[0].Direction = ParameterDirection.Input;
③用户为同一个用户,不存在访问权限问题
------------------------------
小弟已经为该问题纠结了一天了,希望各位高手能帮帮忙,告诉我错在哪里?
解决方案 »
- 求解如何导出Table到Excel
- 2008ASCX页面的问题
- 当数据表的两个字段组合为主键时,datalist 编辑,删除失效 ,求解。
- 提示:HTTP500错误
- GridView的TemplateFiled里有个PlaceHolder,在RowDataBound里动态加载用户控件到PlaceHolder的问题。
- 我的gif图片为什不能动态显示
- ############支持国产共享软件,请大家投上最神圣的一票!!!!散分
- 《ASP.NET揭秘第二版》实例中的数据库怎么用????
- 生成静态列表页面?
- 不知道是什么问题,我的网站传到网上去却打不开?
- 未将对象引用设置到对象的实例..
- asp.net web下的在线聊天
param[3].Value = "2";类型是不是换一下