ORA-06550: 第 1 行, 第 7 列: 
PLS-00201: 必须声明标识符 'USP_GPS_M0IDFY'
ORA-06550: 第 1 行, 第 7 列: 
PL/SQL: Statement ignored我在网上也搜索了原因说是权限原因。然后我用sys用户登录了,GRANT "CONNECT" TO username ;GRANT "RESOURCE" TO username ;GRANT "DBA" TO username 给我的用户都赋权了。可是还是提示这个错误

解决方案 »

  1.   

    'USP_GPS_M0IDFY'
    是变量还是其它什么的  请说明 或者把存储过程贴出来看一下
      

  2.   


    USP_GPS_M0IDFY是存储过程名这是c#调用界面
    public static string EditGPS(string As_CheCi, string A_Operator)
            {
                DbCommand comm = GenericDataAccess.CreateCommandProc_VT();
                comm.CommandText = "USP_GPS_M0IDFY";            DbParameter param = comm.CreateParameter();
                param.ParameterName = "As_CheCi";
                param.Value = As_CheCi;
                param.DbType = DbType.String;
                comm.Parameters.Add(param);
                param = comm.CreateParameter();
                param.ParameterName = "A_Operator";
                param.Value = A_Operator;
                param.DbType = DbType.String;
                comm.Parameters.Add(param);            param = comm.CreateParameter();
                param.ParameterName = "A_MSg";
                param.Value = "成功";
                param.Direction = ParameterDirection.Output;
                param.Size = 200;
                param.DbType = DbType.String;
                comm.Parameters.Add(param);            SQLHelper.GenericDataAccess.ExecuteNonQuery(comm).ToString();
                return param.Value.ToString();
            }
    这是存储过程
    create or replace procedure Usp_GPS_Moidfy( As_CheCi  in  varchar,A_Operator in varchar,A_MSg out varchar )as    v_checkdate date;    v_GPS varchar2(30);    v_carrier varchar2(30);    v_gpsnumber varchar2(30);    V_TRUCK VARCHAR(30);begin   v_checkdate:=sysdate;   --GPS的绑定记录   SELECT Gps_sn,Carrier_Code,truck_no INTO v_GPS,v_carrier,V_TRUCK from Gps_gpsBind WHERE checi=As_CheCi AND ROWNUM=1;   insert into Gps_gpsBind_Changed(CheCi,Truck_No, Carrier_Code, Carrier_Name,Gps_SN, VDR_No,                                    VIN,AIC,Changed_Date,Changed_By,Describle,Create_By,driver_id,driver_name,Driver_Tel)             select As_CheCi,TRUCK_no,Carrier_Code,Carrier_Name,Gps_SN,vdr_no,                  vin,aic,v_checkdate,A_Operator,'发运绑定',A_Operator,driver_id,driver_name,driver_tel             from Gps_gpsBind             where checi=As_CheCi;   --跟新GPS设备情况   update Gps_GpsItem set state='运输中' where Serial_Number=v_GPS;   select Asset_Number into v_gpsnumber from  Gps_GpsItem where Serial_Number=v_GPS;   --跟新GPS变化记录   insert into Gps_ChangedList  (Asset_Number,Serial_Number,Changed_Date,Changed_Name,Save_Dept, Describe, Create_By)                    values(v_gpsnumber,v_GPS,v_checkdate,'发运',v_carrier,'',A_Operator);    UPDATE it_transcar Set lock_flag = 'Y' Where truck_no =V_TRUCK;  commit; a_msg:='OK'; exception  when others then  a_msg := substr(sqlerrm,1,200);  rollback;  END Usp_GPS_Moidfy;
      

  3.   

    首先先确定是否是存储过程的问题  在SQLPLUS或者PLSQL中手动执行存储过程  如果执行没有问题  应该是C#代码调用问题  看连接的数据库用户是否正确  连接的用户是否对存储过程有执行权限 设置一下OracleCommand对象的属性CommandType=CommandType.StoredProcedure;
      

  4.   

    检查存储过程在pl/sql developer编译执行是否有问题,如果执行没有问题的话。
    具体还要看程序和数据库的连接是否有问题,配置文件是否有问题。
    具体的c#代码调用存储过程是否有问题。
      

  5.   


    在PLSQL中执行是没有问题的,而且我的那些连接在执行查询,增加,修改oracle没有问题
      

  6.   

    可以确定的是,c#中可以连接到oracle,所以连接没有问题。而且存储过程也没有问题。所以应该是oracle权限问题,但是不知道怎么去处理
      

  7.   

    嗯。问题找到。还是要谢谢你们。问题是因为我在c#里面写的是USP_GPS_M0IDFY,M0IDFY中的0是零,不是O。。