我目前正在执行一项任务。我需要能够通过 Oracle 中的存储过程执行 SQL 语句。
我可以在 SQLDeveloper 中做到这一点,使用类似:
declare
n varchar2(100);
begin
n := 'insert into REGION(ID_REGION, NOMBRE_REGION) values(10,''DESAMPA'')';
EXECUTE IMMEDIATE n;
end;
区域表非常简单,一个id
和一个varchar
。该块在 SQL Developer 中有效。但是,我需要在这个存储过程中调用它:
Procedure Hacer_Query (P_Query in Varchar2)
AS
EXECUTE IMMEDIATE P_Query;
END;
此过程也有效。但是,我无法从 C# 调用此过程。出于某种原因,我收到 ORA-00900 无效 SQL 错误。我相信这可能与单引号的缩放有关,因为
SELECT nombre_region FROM REGION:
当我将它存储在游标中时,它可以从 C# 工作。我正在使用 OracleParameter 将其发送到过程:
"insert into REGION(ID_REGION, NOMBRE_REGION) values(11,'DESAMPA')"
有什么特殊的方法可以做到这一点吗?引号有什么特殊语法吗?
谢谢您的帮助!
编辑:
EXECUTE IMMEDIATE 'insert into REGION(ID_REGION, NOMBRE_REGION) values(10,''DESAMPA'')';
不起作用。似乎它只能在一个块内工作。我觉得我在这里错过了一些东西......
没关系最后一部分,我现在从一个块中调用它。但是仍然不能在 C# 中工作。