用动态sql来解决 begin execute immediate 'grant select,insert on tbname to username'; end; /
写一个PL/SQL的过程 CREATE OR REPLACE FUNCTION aa IS RETURN INTEGER C_SQL NUMBER; S_SQL VARCHAR2(500); P_ERROR INTEGER; BEGIN P_ERROR := 0; C_SQL := DBMS_SQL.OPEN_CURSOR; S_SQL :='grant select,insert on tbname to username'; DBMS_SQL.PARSE( C_SQL, S_SQL, DBMS_SQL.v7 ) ; ret := DBMS_SQL.EXECUTE( C_SQL ) ; EXCEPTION WHEN OTHERS THEN P_ERROR := P_ERROR + 1; END; END LOOP; DBMS_SQL.CLOSE_CURSOR(C_SQL); RETURN P_ERROR; END ALTER_CONS; / SHOW ERROR
begin
execute immediate 'grant select,insert on tbname to username';
end;
/
CREATE OR REPLACE FUNCTION aa IS RETURN INTEGER
C_SQL NUMBER;
S_SQL VARCHAR2(500);
P_ERROR INTEGER;
BEGIN
P_ERROR := 0;
C_SQL := DBMS_SQL.OPEN_CURSOR;
S_SQL :='grant select,insert on tbname to username';
DBMS_SQL.PARSE( C_SQL, S_SQL, DBMS_SQL.v7 ) ;
ret := DBMS_SQL.EXECUTE( C_SQL ) ;
EXCEPTION
WHEN OTHERS THEN
P_ERROR := P_ERROR + 1;
END;
END LOOP;
DBMS_SQL.CLOSE_CURSOR(C_SQL);
RETURN P_ERROR;
END ALTER_CONS;
/
SHOW ERROR