请各位高手救命!Oracle 删除用户问题 ( 积分: 100 )

  • 主题发起人 主题发起人 qiangzai
  • 开始时间 开始时间
Q

qiangzai

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在程序中运行以下SQL语句,判断oracle中的‘GL’用户是否存在,如果存在就将其删除,但是始终有错误出现,请各位高手救命
--------------程序--------------------
DECLARE
IS_GL_EXIST NUMBER;
BEGIN
SELECT COUNT(*) INTO :IS_GL_EXIST FROM USER$ WHERE NAME='GL';

IF IS_GL_EXIST>0 THEN
DROP USER GL CASCADE;
END IF;
END;
--------------报错信息--------------------
PLS-00103: 出现符号 "DROP"在需要下列之一时:
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
 
我想在程序中运行以下SQL语句,判断oracle中的‘GL’用户是否存在,如果存在就将其删除,但是始终有错误出现,请各位高手救命
--------------程序--------------------
DECLARE
IS_GL_EXIST NUMBER;
BEGIN
SELECT COUNT(*) INTO :IS_GL_EXIST FROM USER$ WHERE NAME='GL';

IF IS_GL_EXIST>0 THEN
DROP USER GL CASCADE;
END IF;
END;
--------------报错信息--------------------
PLS-00103: 出现符号 &quot;DROP&quot;在需要下列之一时:
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
 
DDL类的语句要用动态SQL吧,另外还需要有DROP User的权限
 
DECLARE
IS_GL_EXIST NUMBER(3);
BEGIN
SELECT COUNT(*) INTO IS_GL_EXIST FROM all_users WHERE USERNAME='GL';
IF IS_GL_EXIST>0 THEN
EXECUTE IMMEDIATE 'DROP USER GL CASCADE';
END IF;
END;
/
1.變量前面沒有':',':'是PB或Delphi的寫法。
2.用動態SQL執行。
 
同意BrainYang
你在IS_GL_EXIST前面放的那个:是表示后面的这个参数是个用户输入的参数
 
我覺得你寫法應該有問題
 
同意BrainYang
 
后退
顶部