我的连接字符串为:string connstr = "Data Source=**;user=system;password=**;"
插入语句:string orclstr="insert into SYS.A_MODULE values('03','查看生产任务','查看生产任务进度')";
我在sql developer里创建的表,用的是sys用户,可我在连接字符串里用sys用户时,说让我用sysdba用户登录。
改用system后,提示的出错信息:ORA-01031: 权限不足
oracle 菜鸟,学习中

解决方案 »

  1.   

    存储过程是创建在那个用户下面的,就要给这个用户赋予执行存储过程的权限
    在存储过程里面ddl语句都要以动态sql的方式来执行的   
      execute   immediate   'grant   create   view   to 
    在用户hb下执行:   
      grant   update   on   table1   to   nb   
      grant   select   on   table2   to   nb
      

  2.   

    我现在没有用存储过程,就单条插入语句,都不成功,是不是sys用户的问题?我创建数据时用的是sys用户,表也都在sys用户下
      

  3.   

    以下是在控制台下试验代码:
    static void Main(string[] args)
            {
                string connstr = "Data Source=***;user=system;password=***;";
                OracleConnection conn = new OracleConnection(connstr);
                conn.Open();            string orclstr="insert into SYS.A_MODULE values('03','查看生产任务','查看生产任务进度')";
                try
                {
                    OracleCommand cmd = new OracleCommand(orclstr, conn);
                    cmd.ExecuteNonQuery();
                }
                catch (InvalidOperationException ex)
                {
                    Console.Write(ex.Message);
                }
            }
      

  4.   

    问题已解决,犯了个错,在sql developer里新建连接时,如果选择system用户登录,则role选择default,测试OK,插入数据也OK;但是选择sys用户登录时,role必须选择sysdba才能测试连接通过,但问题也出在这:数据库连接是OK了,在asp.net页面写连接字符串时如果user=sys,运行时提示必须用sysdba用户登录,纳闷了,我在sql developer里就是选择了role为sysdba才建立的连接呀!!!找了好多资料,看来是这个sys用户的问题,有好多建议说最好不用sys,自己新建用户,在新用户下建表,就一切OK!!本人测试了一下system,role为default建立的连接,建了张表,insert没问题。谢谢楼上几位,结贴了