我已經寫在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