我正在尝试在APEX上实现一个表单,允许用户(在这种情况下是dba)选择数据库,然后更改他们的用户名和密码。
我已经正确设置了输入字段,但是我完全不知道如何将它与实际数据库关联起来。我假设我必须使用数据库链接来访问不同的数据库。
这是否可行?
我已经正确设置了输入字段,但是我完全不知道如何将它与实际数据库关联起来。我假设我必须使用数据库链接来访问不同的数据库。
这是否可行?
alter user xyz@remote_database identified by new_password
您可能需要在远程数据库上编写一个存储过程,接受用户名和密码,并为您更改该用户的密码。然后您可以执行以下操作:
begin
change_password('xyz','new_password')@remote_database;
end;
用户通过常规的APEX表单输入其凭据和所需的新密码。
表单数据在包含iframe的HTML区域中使用替换字符串进行处理。例如:<iframe height='300' width='100%' scrolling="no" src="http://***SERVER***/cgi-bin/chguserpwd.cgi dbname=&DATABASE_NAME.&username=&USERNAME.&oldpwd=&CURR_PASSWORD.&newpwd=&NEW_PASSWORD."></iframe>
cgi脚本完成工作并通过iframe返回结果
#!/usr/bin/ksh
my_input=$QUERY_STRING;
dbname=`echo "$QUERY_STRING" |awk '{FS="&"} {print $1}'|awk '{FS="="} {print $2}'`
username=`echo "$QUERY_STRING" |awk '{FS="&"} {print $2}'|awk '{FS="="} {print $2}'`
oldpwd=`echo "$QUERY_STRING" |awk '{FS="&"} {print $3}'|awk '{FS="="} {print $2}'`
newpwd=`echo "$QUERY_STRING" |awk '{FS="&"} {print $4}'|awk '{FS="="} {print $2}'`
print "Content-Type: text/html\n\n"; print " Database Name is $dbname ............ User is $username ";
cd **dir**
./chguserpwd $dbname $username $oldpwd $newpwd
从cgi-script执行SQL命令 ./chguserpwd
set markup HTML on
prompt .
alter user &1 identified by &2;
prompt Password has been changed