我正在学习使用存储过程
数据库ORACLE,存储过程如下:
CREATE OR REPLACE PROCEDURE TestInsert(idnum in number)
as
begin INSERT INTO clob_test2 (id) values(idnum);end TestInsert;有一段C#代码,调用存储过程
string SQL = "TESTINSERT";
cmd.CommandText = SQL;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("xx", OracleType.Number);
cmd.Parameters[0].Value = "210";
cmd.ExecuteNonQuery();报错如下:
ORA-06550: 行1、列7:
PLS-00306: 调用'TESTINSERT'时自变量数量或类型错误
ORA-06550: 行1、列7:
PL/SQL: Statement ignored请问应该怎么改?
数据库ORACLE,存储过程如下:
CREATE OR REPLACE PROCEDURE TestInsert(idnum in number)
as
begin INSERT INTO clob_test2 (id) values(idnum);end TestInsert;有一段C#代码,调用存储过程
string SQL = "TESTINSERT";
cmd.CommandText = SQL;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("xx", OracleType.Number);
cmd.Parameters[0].Value = "210";
cmd.ExecuteNonQuery();报错如下:
ORA-06550: 行1、列7:
PLS-00306: 调用'TESTINSERT'时自变量数量或类型错误
ORA-06550: 行1、列7:
PL/SQL: Statement ignored请问应该怎么改?
解决方案 »
- gridview控件连接数据库。。
- C# 求解删除文件前对文件进行备份
- 我在单位办公室局域网中我自己专用的计算机上搞开发,我编写的源代码是否会被局域网中其他人盗走?我的开机密码只有我自己知道。
- [新手请教]关于获取ListView控件中的值!
- word barcode 部署在window 2008 报错:类型不匹配
- 怎样把this.dataGridView1.Width 的宽度转换成cm
- 请教c#2005中串口读数的问题
- 论坛如何在一个DATAGRID里面调用帖子表和回帖人信息表的信息!!
- 在线等:关于两个关系表中的DataGrid更新问题
- datagrid超级联结列问题
- 关于模拟QQ
- 自己写的windows服务程序,用installutil安装以后,不能自动启动?
cmd.CommandText = SQL;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("xx", OracleType.Number);
cmd.Parameters[0].Value = "210";
cmd.ExecuteNonQuery();cmd.Parameters[0].Value = "210" 不应该是字符,
改为cmd.Parameters[0].Value = 210
正确
cmd.Parameters.Add("@idnum", OracleType.Number);
cmd.CommandText = SQL;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("idnum", OracleType.Number); // 参数名是存储过程参数名相同
cmd.Parameters[0].Value = "210"; // 用“210” 和 210 都可以
cmd.ExecuteNonQuery();改成这样就成功了
@idnum number
as
begin INSERT INTO clob_test2 (id) values(idnum);end TestInsert;string SQL = "exec TESTINSERT @idnum";
cmd.CommandText = SQL;
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("@idnum", OracleType.Number);
cmd.Parameters[0].Value = 210;
cmd.ExecuteNonQuery();
@idnum number
as
begin INSERT INTO clob_test2 (id) values(@idnum); end TestInsert; string SQL = "exec TESTINSERT @idnum";
cmd.CommandText = SQL;
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("@idnum", OracleType.Number);
cmd.Parameters[0].Value = 210;
cmd.ExecuteNonQuery();
你确定参数写的没错?