下面是我写的一个创建表和储发器的存储过程,我在Sql Tools1.5里面直接调用就可以正常执行。可是在C#里面一调用就报错,请各位大虾帮忙看看是什么问题,谢谢了。
CREATE OR REPLACE PROCEDURE createtable(WellName IN VARCHAR2,
Table_Name IN VARCHAR2,
boiler IN VARCHAR2,
managerarea IN VARCHAR2) AUTHID current_user AS
sqlstr VARCHAR2(500);
BEGIN
sqlstr:='CREATE TABLE '||Table_Name||'(
cjsj DATE,
jkgd NUMBER(10,2),
zryl NUMBER(10,2),
zqwd NUMBER(10,2),
zqsd NUMBER(10,2)
)';
--Dbms_Output.put_line(sqlstr);
EXECUTE IMMEDIATE sqlstr;
sqlstr:='CREATE TABLE '||Table_Name||'_H(
cjsj DATE,
jkgd NUMBER(10,2),
zryl NUMBER(10,2),
zqwd NUMBER(10,2),
zqsd NUMBER(10,2)
)';
--Dbms_Output.put_line(sqlstr);
EXECUTE IMMEDIATE sqlstr;
sqlstr:='CREATE TABLE '||Table_Name||'_D(
cjsj DATE,
jkgd NUMBER(10,2),
zryl NUMBER(10,2),
zqwd NUMBER(10,2),
zqsd NUMBER(10,2),
runhours NUMBER(10)
)';
--Dbms_Output.put_line(sqlstr);
EXECUTE IMMEDIATE sqlstr;
sqlstr:= 'CREATE OR REPLACE TRIGGER '||Table_Name||'_Tri
BEFORE INSERT ON '||Table_Name||
' FOR EACH ROW
BEGIN
HistoryData('''||Table_Name||''',SYSDATE,:new.zryl,:new.jkgd,:new.zqwd,:new.zqsd);
END';
--Dbms_Output.put_line(sqlstr);
EXECUTE IMMEDIATE sqlstr;
sqlstr:='INSERT INTO wells(wname,rtable,boiler,managerarea,issteam,tempstop,stoptimes) VALUES ('''||
WellName||''','''||Table_Name||''','''||boiler||''','''||managerarea||''',''Y'',''N'',0)';
--Dbms_Output.put_line(sqlstr);
EXECUTE IMMEDIATE sqlstr;
END;
下面是在C#里调用的时候C#报出的出错信息:
ORA-06550: 第 1 行, 第 30 列:
PLS-00103: 出现符号 ":"在需要下列之一时:
( - + case mod new not null
<an identifier> <a double-quoted delimited-identifier>
<a bind variable> continue avg count current exists max min
prior sql stddev sum variance execute forall merge time
timestamp interval date
<a string literal with character set specification>
<a number> <a single-quoted SQL string> pipe
<一个带有字符集说明的可带引号的字符串文字>
<一个可带引号的 SQL 字符串> purge
符号 "(在 ":" 继续之前已插入。
ORA-06550: 第 1 行, 第 55 列:
PLS-00103: 出现符号 ":"在需要下列之一时:
( - + case mod new not null
<an identifier> <a double-quoted delimited-identifier>
<a bind variable> continue avg count current exists max min
prior sql stddev sum variance execute foral
ORA-06550: 第 1 行, 第 78 列:
PLS-00103: 出现符号 ":"在需要下列之一时:
( - + case mod new not null
<an identifier> <a double-quoted delimited-identifier>
<a bind variable> continue avg count cur
------解决方案--------------------
调用的语句写下
------解决方案--------------------
你这过程应该是没问题的,你把调用方法里面的问题吧,参数得:什么意思呢
------解决方案--------------------
这种C#问题在C#板块问。
不过印象中,不允许参数带冒号。去掉即可。