我的代码:
oracleCom.CommandText = @"declare P_ID tbl_objects.i_id%TYPE;
BEGIN
UPDATE tbl_objects
SET i_status_id = 234
WHERE s_code = '" + objectsChanged[j] +
@"' RETURNING i_id INTO P_ID;
:param_id := P_ID;
END;";
oracleCom.Parameters.Add("param_id", OracleType.Number).Direction = ParameterDirection.Output;
try
{
oracleCom.ExecuteNonQuery();
}
catch
{----------}
编译器生成错误: 错误的名称/变量编号。 但是当我在pl / sql开发人员中使用这个sql时,一切正常。
此代码正常工作:
OracleCommand oracleCom = new OracleCommand
{
Connection = oraConnect,
CommandText = @"declare P_ID tbl_objects.i_id%TYPE;
BEGIN insert into tbl_objects
(s_code, i_status_id)
values
(:s_code, 234)
RETURNING I_ID INTO :p_id;
END;"
};
答案 0 :(得分:0)
OracleCommand
无法处理多行存储过程。您必须将CommandText
更改为一行。 (只需删除所有新行)。
我个人有一个用空格替换新行的方法,所以我可以存储格式化的命令,但是我会把它弄平并且#34;将它们放入OracleCommand
之前。
答案 1 :(得分:0)
这可能只是一个小错误。而不是:
:param_id = P_ID;
它应该是:
:param_id := P_ID;
(赋值而不是相等运算符)。