我有这张桌子
create table utilizator(
utilizatorId bigint not null auto_increment primary key,
loghin varchar(500),
password varchar(50) not null,
tip bigint not null,
persoanaId bigint not null,
evenimentId bigint not null);
和c ++中的代码
string vU="demo",vP="1234";
Driver * vDriver = get_driver_instance();
auto_ptr< Connection > vCon(vDriver->connect(getHost(),getUser() , getPassword() ));
vCon->setSchema(getDB());
auto_ptr< Statement > vStmt(vCon->createStatement());
vStmt->execute("DROP PROCEDURE IF EXISTS fLoghin");
vStmt->execute("CREATE PROCEDURE fLoghin(in pUser varchar(200),in pPass varchar(200),out pUId int,out pTip int,out pEId int) BEGIN select utilizatorId into pUId ,tip into pTip,evenimentId into pEId from utilizator where loghin=pUser and password=pPass ; END ; ");
vStmt->execute("CALL fLoghin("+vU+","+vP+", @out1,@out2,@out3)");
auto_ptr<ResultSet > res(vStmt->executeQuery("SELECT @out1,@out2,@out3 AS _reply"));
while (res->next())
cout << "... @output = " << res->getString("_reply") << endl;
在行 vStmt-&gt;执行(“创建程序...... 我收到此错误
ERR: Undeclared variable: tip (MySQL error code: 1327, SQLState: 42000 )
答案 0 :(得分:1)
尝试
CREATE PROCEDURE fLoghin(in pUser varchar(200),
in pPass varchar(200),
out pUId int,
out pTip int,
out pEId int)
BEGIN
select pUId = utilizatorId, pTip = tip, pEId = evenimentId
from utilizator
where loghin=pUser and password=pPass ;
END ;
我现在无法验证。也许您需要在变量前放置@
,例如
@PUId = utilizatorId ...