叫你做你就做,别人都写明白了,不要太固执
grant create any table to sssuser;

解决方案 »

  1.   

    试了 结果如下:
     as
       v_sql varchar(255);
    begin
      CONNECT sys/sssadmin@sss AS SYSDBA; 
      GRANT create any table TO sssuser; 
     
      CONNECT sssuser/sssuser@sss; 
      v_sql:='CREATE TABLE aaa (category_id nvarchar2(20) not null)';
      EXECUTE IMMEDIATE v_sql;
    end;
    编译时报错:
    行号= 4 列号= 3 错误文本= PLS-00103: 出现符号 "CONNECT"在需要下列之一时:  begin case declare exit    for goto if loop mod null pragma raise return select update    while with <an identifier>    <a double-quoted delimited-identifier> <a bind variable> <<    close current delete fetch lock insert open rollback    savepoint set sql execute commit forall merge    <a single-quoted SQL string> pipe 符号 "case在 "CONNECT" 继续之前已插入。 
    行号= 4 列号= 28 错误文本= PLS-00103: 出现符号 "AS"在需要下列之一时:  . ( * @ & = - + < / > at in    is mod not rem when <an exponent (**)> <> or != or ~= >= <=    <> and or like between || 
      

  2.   

    不是你那样的

     CONNECT sys/sssadmin@sss AS SYSDBA; 
      GRANT create any table TO sssuser; 然后
      CONNECT sssuser/sssuser@sss;
      EXECUTE IMMEDIATE v_sql;
    不是把下面两句
      CONNECT sys/sssadmin@sss AS SYSDBA; 
       GRANT create any table TO sssuser; 
    放在存储过程
      

  3.   


      CONNECT sys/sssadmin@sss AS SYSDBA; 
      GRANT create any table TO sssuser; 
    不是在程序里面,是在sql*plus里面执行。
      

  4.   

    谢谢两位,把授权的两句放在SQLPLUS中执行没问题。只是。。
    我的存储过程是前台程序在用,不是放在SQLPLUS中执行,那这样的授权语句写在哪??
      

  5.   

    grant create any table to sssuser;
    你已经用sqlplus 命令赋给sssuser见表权限了,所以没有必要再在存储过程中在符权限