日期:2014-05-17  浏览次数:20831 次

Oracle存储过程调用问题。
下面是我写的一个创建表和储发器的存储过程,我在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&nbs