ORA-06550:第 1 行,第 7 列:\nPLS-00905:对象 TEST.CMPPROJECTPROC 无效\nORA-06550:第 1 行,第 7 列:\nPL/SQL:语句被忽略&qu

Posted

技术标签:

【中文标题】ORA-06550:第 1 行,第 7 列:\\nPLS-00905:对象 TEST.CMPPROJECTPROC 无效\\nORA-06550:第 1 行,第 7 列:\\nPL/SQL:语句被忽略"【英文标题】:ORA-06550: line 1, column 7:\nPLS-00905: object TEST.CMPPROJECTPROC is invalid\nORA-06550: line 1, column 7:\nPL/SQL: Statement ignored"ORA-06550:第 1 行,第 7 列:\nPLS-00905:对象 TEST.CMPPROJECTPROC 无效\nORA-06550:第 1 行,第 7 列:\nPL/SQL:语句被忽略" 【发布时间】:2015-11-03 07:29:41 【问题描述】:

我在 oracle 中创建了一个将数据插入表中的过程。当我从 asp.net webservices 调用该过程时,它会调用以下错误..

"ORA-06550:第 1 行第 7 列:\nPLS-00905:对象 TEST.CMPPROJECTPROC 无效\nORA-06550:第 1 行第 7 列:\nPL/SQL:语句被忽略""

我的程序代码是

CREATE OR REPLACE PROCEDURE CMPPROJECTPROC (  
p_projectname CMPPROJECT.PROJECTNAME%TYPE,  
p_description CMPPROJECT.DESCRIPTION%TYPE,  
p_company CMPPROJECT.COMPANY%TYPE,
p_projectstatus CMPPROJECT.PROJECTSTATUS%TYPE,
p_websiteurl CMPPROJECT.WEBSITEURL%TYPE,
p_completedin CMPPROJECT.COMPLETEDIN%TYPE,
p_startedin CMPPROJECT.STARTEDIN%TYPE,
p_status CMPPROJECT.STATUS%TYPE)
IS  
BEGIN  
INSERT INTO CMPPROJECT (PROJECTNAME,DESCRIPTION,COMPANY,PROJECTSTATUS,WEBSITEURL,COMPLETEDIN,STARTEDIN,STATUS)  
VALUES (p_projectname,p_description,p_company,p_projectstatus,p_websiteurl,p_completedin,p_startedin,p_status);  
COMMIT;  
END;

我的网络服务代码是

 [WebMethod]

        public void Insert(string name, string description, int companyName, int projectStatus, string websiteurl, string completedin, string startredin, int status)
        
            cmd = con.CreateCommand();
            con.Open();

            //cmd.CommandText = "CMPPROJECTPROC";
            cmd = new OracleCommand("CMPPROJECTPROC", con);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("p_projectname", OracleDbType.Varchar2).Value = name;
            cmd.Parameters.Add("p_description", OracleDbType.Varchar2).Value = description;
            cmd.Parameters.Add("p_company", OracleDbType.Int16).Value = companyName;
            cmd.Parameters.Add("p_projectstatus", OracleDbType.Int16).Value = projectStatus;
            cmd.Parameters.Add("p_websiteurl", OracleDbType.Varchar2).Value = websiteurl;
            cmd.Parameters.Add("p_completedin", OracleDbType.Varchar2).Value = completedin;
            cmd.Parameters.Add("p_startedin", OracleDbType.Varchar2).Value = startredin;

            cmd.Parameters.Add("p_status", OracleDbType.Int16).Value = status;
            cmd.ExecuteNonQuery();
            con.Close();
    

【问题讨论】:

存储过程对我来说看起来不错,只要它与表和表/过程中的列名拼写正确位于相同的模式中。 select * from all_errors ae where ae.name = 'CMPPROJECTPROC' 的输出是什么? 您使用什么 IDE/工具来编写和编译您的程序?您需要调查程序无效的原因。通常,您的工具会在编译时清楚地说明这一点。 【参考方案1】:

数据库中的存储过程无效。它将不得不再次编译。它可能会抛出错误。

当编译过程所针对的数据库发生任何变化时,过程将失效。例如,如果您更改了过程使用的表,则必须重新编译它,否则您将收到此错误消息。

您可以通过执行以下操作重新编译您的存储过程:

ALTER PROCEDURE TEST.CMPPROJECTPROC COMPILE;

【讨论】:

以上是关于ORA-06550:第 1 行,第 7 列:\nPLS-00905:对象 TEST.CMPPROJECTPROC 无效\nORA-06550:第 1 行,第 7 列:\nPL/SQL:语句被忽略&qu的主要内容,如果未能解决你的问题,请参考以下文章

ORA-06550:第 1 行,第 7 列:\nPLS-00905:对象 TEST.CMPPROJECTPROC 无效\nORA-06550:第 1 行,第 7 列:\nPL/SQL:语句被忽略&qu

“ORA-06550: 第 1 行, 第 7 列”解决方法

ORA-06550:第 13 行,第 4 列:PLS-00103:遇到“UPDATE” ORA-06550:第 15 行,第 3 列:PLS-00103:遇到符号“END”

必须声明组件错误 (ORA-06550)

ORA-06550:第 12 行,第 9 列:PL/SQL:ORA-00936:缺少表达式 ORA-06550:第 9 行,第 5 列:PL/SQL:忽略 SQL 语句

ORA-06550 第 10 行,第 41 列:PLS-00103:在预期以下情况之一时遇到符号“,”: