存储过程如下:
CREATE OR REPLACE PROCEDURE CheckIn
(
    输入编号 IN varchar2,
    输入密码 IN varchar2,
    ret     OUT integer
)
AS
是否存在 int;
正确密码 varchar(20);
BEGIN
SELECT COUNT(*) into 是否存在
FROM Admin
WHERE 编号 = 输入编号;
IF( 是否存在=0)
THEN
dbms_output.put_line('输入的管理员编号不存在');
ret:=0;
END IF;
SELECT 密码 into 正确密码
FROM Admin 
WHERE  编号 = 输入编号;
IF(输入密码 != 正确密码)
THEN
dbms_output.put_line( '密码不正确,请重新输入');
ret:=-1;
ELSE
dbms_output.put_line('登录成功!');
ret:=1;
END IF;
END;※※※※※※※※※※※※※※※※※※※※※※※※※※※※
调用的代码如下:
_CommandPtr cmd;
cmd.CreateInstance(__uuidof(Command));
_ParameterPtr paramIn1,paramIn2,paramOut;
paramIn1=cmd->CreateParameter("paramIn1",adVarChar,adParamInput,20,_variant_t("001"));
cmd->Parameters->Append(paramIn1);
paramIn2=cmd->CreateParameter("paramIn2",adVarChar,adParamInput,20,_variant_t("001"));
cmd->Parameters->Append(paramIn2);
paramOut=cmd->CreateParameter("paramOut",adInteger,adParamOutput,4,_variant_t("0"));
cmd->Parameters->Append(paramOut);
cmd->ActiveConnection=m_pConnection;//m_pConnection是建立好的数据库连接,没有问题
cmd->CommandType=adCmdStoredProc;
cmd->CommandText="checkin";
cmd->Execute(NULL, NULL, adCmdStoredProc);
int r = paramOut->Value.intVal;
}
catch(_com_error e)
{
MessageBox(e.Description());
}编译可以通过,但是执行时说“too many arguments......”什么的,是什么原因啊?怎么解决?存储过程在sql*plus里可以正常运行的,接受3个参数大侠帮帮忙啊,为这个问题头疼了一天了……解决了就给分,只给第一个正确解决了这个问题的!