我試圖創建布爾輸入參數的存儲過程: -的Oracle 11g - 傳遞布爾存儲過程
第1步:我創建了一個表像下面
CREATE TABLE STOREBOOL (BOOLVAL NUMBER(1));
步驟2:我創建了一個存儲過程
基於以下鏈接:http://docs.oracle.com/cd/F49540_01/DOC/java.815/a64685/tips3.htm#1005343創建了一個程序
CREATE OR REPLACE PROCEDURE boolProc(x boolean)
AS
BEGIN
INSERT INTO storebool("boolval") VALUES(x);
COMMIT;
END;
輸出是: -
Warning: Procedure created with compilation errors.
類似地創建的第二個過程:
CREATE OR REPLACE PROCEDURE boolWrap(x int)
AS
BEGIN
IF (x=1) THEN
boolProc(TRUE);
ELSE
boolProc(FALSE);
END IF;
END;
輸出是: -
Warning: Procedure created with compilation errors.
步驟3:執行代碼
BEGIN
boolWrap(1);
END;
/
它顯示了以下錯誤:
boolWrap(1);
*
ERROR at line 2:
ORA-06550: line 2, column 1
PLS-00905: object SCOTT.BOO
ORA-06550: line 2, column 1
PL/SQL: Statement ignored
如何運行它是否正確?
當從Java代碼中調用它。我做了以下事情: - 連接conn = DriverManager.getConnection(「jdbc:oracle:oci8:@」,「scott」,「tiger」); CallableStatement pstmt = conn.prepareCall(「begin boolWrap(?); end;」); pstmt.setBoolean(1,true); pstmt.execute();但它顯示錯誤6550ORA-06550:第1行,第7列: PLS-00306:調用'BOOLWRAP'時參數的錯誤數量或類型 ORA-06550:第1行,第7列: PL/SQL:語句被忽略 –
sasi
@sasi - [來自文檔](http://docs.oracle.com/cd/E18283_01/appdev.112/e13995/oracle/jdbc/OracleCallableStatement.html#setBoolean_java_lang_String__boolean_),它被轉換爲「BIT」類型。 [也看到這個](http://docs.oracle.com/cd/E11882_01/java.112/e16548/apxtblsh.htm#JJDBC28981):「JDBC驅動程序不支持將BOOLEAN參數傳遞給存儲的PL/SQL程序」。你需要用'setInt'來調用'boolProc'。但是......我從名字猜測這是你開始的地方? –
我的要求是從java傳遞布爾值。所以我使用boolWrap。有沒有辦法從java傳遞布爾值。 – sasi