数据库要从SQLServer移植到ORACLE,数据转换成功,存储过程遇到问题了。是注册用户的存储过程,先随机生成用户的密码,然后插入记录,返回这个密码。SQL的代码,为简单起见,我把生成密码和判断用户已经存在的代码拿掉了:
CREATE PROCEDURE reguser
@username varchar(20)
as
declare @pwd char(6)
set @pwd = '123456'select pwd
insert into users(account,psw) values(@username,@pwd)
end移植到ORACLE:
CREATE OR REPLACE  FUNCTION REGUSER(username in varchar2)
return varchar2
as
pwd varchar2(20);
begin
pwd := '123456';
insert into users(account,psw) values(username,pwd);
return pwd;
end;主要是函数调用问题,客户程序用到了一个第三方开发的数据库操作DLL,没有源代码,接口调用倒是很简单,在一个配置文件中写好数据库连接,一些SQL语句等,然后调用其接口:Connect,Open,Exec等,原来程序的调用是:
Connect();
Open("reguser 'myname'");
if(!EOF())
GetString(0);执行SQL:reguser 'myname',然后取出结果集的第一个字段就是密码。但是转到ORACLE,执行"select reguser('myname') from dual"报ORA-14551: 无法在查询中执行 DML 操作,该怎么搞啊?