我已经写在MySQL中的简单的数据库程序如下:调用简单的数据库程序用油滑3.0
DROP PROCEDURE IF EXISTS sp_doSomething;
DELIMITER //
CREATE PROCEDURE sp_doSomething
(IN pVal1 varchar(100),
IN pVal2 int(15)
)
BEGIN
DECLARE vCnt int(5) DEFAULT 0;
DECLARE vID int(15) DEFAULT 0;
DECLARE vTempID int(15) DEFAULT 0;
-- get ID
SELECT id INTO vID FROM T1
WHERE name = pVal1;
-- get count
SELECT count(*) INTO vCnt FROM T1
WHERE owner = vID;
-- get the log
INSERT INTO log select CONCAT('-v1-:', pVal1, ':-v2-:', pVal2);
-- Create basic stuff if it doesn't exist
IF vFolderCnt = 0 THEN
INSERT INTO T1 (`id`, `col1`, `col2`, `col3`)
SELECT null, vID, 'some value', CONCAT(vID,'^1') FROM T1
WHERE owner = 0;
END IF;
commit;
END //
DELIMITER ;
现在,我想调用这个过程中我的发挥框架2.4的应用程序,它使用3.0油滑。这是一件很简单的事情,但我真的很困难,因为没有适当的文件可用。这非常令人沮丧。
,因为它是在谷歌集团提到这里https://groups.google.com/forum/#!searchin/scalaquery/procedure/scalaquery/BUB2-ryR0bY/EFZGX663tRYJ
我打过电话通过不同的方式方法。代码编译但程序根本不会被调用。
此声明给出了一个操作错误。
db.run(sql"{call sp_doSomething('${st.val1}', 1)}")
以下语句编译正常,但不会调用该过程。
db.run(sql"{call sp_doSomething('${st.val1}', 1)}".as[Int])
以下语句编译得很好,但不会调用该过程。
db.run(sqlu"{call sp_doSomething('${st.val1}', 1)}")
或者 db.run(sqlu “{?=调用sp_doSomething( '$ {} st.val1',1)}”)
我已授予程序执行权限我数据库用户并验证它。
另外,我不确定在过程中是否需要COMMIT?
任何帮助,将不胜感激。
'COMMIT'只需要在'START TRANSACTION'块的结束,这你不必。 – thund