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:第 13 行,第 4 列:PLS-00103:遇到“UPDATE” ORA-06550:第 15 行,第 3 列:PLS-00103:遇到符号“END”
ORA-06550:第 12 行,第 9 列:PL/SQL:ORA-00936:缺少表达式 ORA-06550:第 9 行,第 5 列:PL/SQL:忽略 SQL 语句