知識の不足を許してください。私はsqlnavigator
から挿入関数を呼び出そうとしています。私はprm1.Value
をキャプチャすることができますが、私はRETURN NUMBER
(以下のSQLを参照)をsqlnavigatorの私のパッケージ仕様からどのように含めるべきかわかりません。私がそれを実行すると、何もORACLEに追加されません。戻り値のある関数を呼び出す方法
Public Shared Function INSERT_CATEGORY()
Dim cmdOraCommand As New OracleCommand
Try
cmdOraCommand.CommandType = CommandType.StoredProcedure
cmdOraCommand.CommandText = "SF_ALEX_TEST.insertCategory"
Dim prm1 As OracleParameter = cmdOraCommand.Parameters.Add(_
"inCategory", OracleType.VarChar)
prm1.Direction = ParameterDirection.Input
prm1.Value = strCategory
Catch ex As Exception
MsgBox(ex.Message)
Finally
cmdOraCommand.Dispose()
End Try
End Function
SQL/ORACLE
FUNCTION insertCategory(inCategory IN VARCHAR2) RETURN NUMBER
IS
vReturnedValue NUMBER;
vID NUMBER;
vExist NUMBER;
BEGIN
IF inCategory IS NULL THEN
vReturnedValue := 0;
RETURN vReturnedValue;
ELSE
BEGIN
SELECT COUNT(MNT_CATEGORY) INTO vExist
FROM MNT_CATEGORIES
WHERE MNT_CATEGORIES.MNT_CATEGORY = upper(inCategory);
END;
IF vExist = 0 THEN
BEGIN
SELECT SEQ_MNT_LOG.NEXTVAL INTO vID FROM DUAL;
INSERT INTO MNT_CATEGORIES(MNT_CATEGORY_ID, MNT_CATEGORY)
VALUES (vID, UPPER(inCategory));
COMMIT;
vReturnedValue := vID;
RETURN vReturnedValue;
EXCEPTION
WHEN OTHERS THEN
vReturnedValue := SQLCODE;
RETURN vReturnedValue;
END;
ELSE
vReturnedValue := vExist * -1;
RETURN vReturnedValue;
END IF;
END IF;
END;
スコット、答えてくれてありがとう。私は接続を開いてコマンドを実行しました。さらに、私は 'ParameterDirection.ReturnValue'を使いました。 –