Я пытаюсь передать параметр в мою функцию, но он равен нулю. Не могли бы вы проверить и держать меня в курсе, что не так с моим кодом?
string CommandStr = "BFN_HASH_PASSWORD";
using (OracleConnection conn = new OracleConnection(oradb))
using (OracleCommand cmd = new OracleCommand(CommandStr, conn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("V_INPASSWD", OracleDbType.Varchar2,ParameterDirection.Input).Value ="TEST";
cmd.Parameters.Add("V_OUTPASSWD", OracleDbType.Varchar2,ParameterDirection.ReturnValue);
conn.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("hash pass:"+ cmd.Parameters["V_OUTPASSWD"].Value.ToString());
MessageBox.Show("hash pass:" + cmd.Parameters["V_INPASSWD"].Value.ToString());
}
моя функция оракула:
FUNCTION BFN_HASH_PASSWORD(V_INPASSWD VARCHAR2) RETURN VARCHAR2 IS
V_OUTPASSWD VARCHAR2(1000):= '';
LN_CNT1 NUMBER := 0;
LN_SUM NUMBER := 0;
BEGIN
IF V_INPASSWD IS NOT NULL THEN
LN_CNT1 := LENGTH(RTRIM(LTRIM(V_INPASSWD)));
FOR I IN 1 .. LN_CNT1 LOOP
LN_SUM := LN_SUM + ASCII(SUBSTR(UPPER(V_INPASSWD),I,1)) ;
END LOOP;
V_OUTPASSWD := V_INPASSWD || LN_SUM;
insert into TEST_CSHARP(msg,d_date) values('V_OUTPASSWD:'||V_OUTPASSWD,sysdate);
commit;
RETURN(V_OUTPASSWD);
ELSE
insert into TEST_CSHARP(msg,d_date) values('V_INPASSWD:'||V_INPASSWD,sysdate);
commit;
RETURN V_INPASSWD;
END IF;
END ;
вывод test_csharp такой, как показано ниже:
msg d_date
V_INPASSWD: 05/03/2018 14: 05: 34