からPL/SQLを実行しようとしていますが、これはユーザー・エラーです。ORA-00922:欠落しているか無効なオプションです。C#
私は、OracleデータベースへのC#を結ぶに新しいですし、私のPL/SQLは、Oracle SQL Developer内から作品Oracle online documentation
で、その後私のコードをモデル化しました。私は私のTest.aspxというページに取得していますエラーは次のとおりです。
ORA-00922: missing or invalid option
test.aspx.csページ内の背後にあるコードは次のとおりです。
string currentTerm = getCurrentTerm();
string passwd = "<get password input>";
string salt = "<get salted input>";
conn.ConnectionString = ConfigurationManager.ConnectionStrings["CONNECTIONSTRINGNAME"].ConnectionString;
conn.Open();
// pl/sql block
string pl_sql = " set serveroutput on " +
"DECLARE"+
" output tablename.function%TYPE;" +
"BEGIN"+
" tablename.myfunction(:1,:2,:3);" +
" dbms_output.put_line('output= '||output"+
"END;";
//Oracle Parameters necessary for the myfunction function
OracleParameter p_1 = new OracleParameter(passwd, OracleDbType.Varchar2, 50, ParameterDirection.Input);
OracleParameter p_2 = new OracleParameter(salt, OracleDbType.Varchar2, 50, ParameterDirection.Input);
OracleParameter p_3 = new OracleParameter("3", OracleDbType.Varchar2, 50, ParameterDirection.Output);
// create the command object
OracleCommand cmd = conn.CreateCommand();
cmd.CommandText = pl_sql;
// add the parameters
cmd.Parameters.Add(p_1);
cmd.Parameters.Add(p_2);
cmd.Parameters.Add(p_3);
// execute the pl/sql block
cmd.ExecuteNonQuery();
// get a data reader from the ref cursor
// note: this is on p_3, the output value
OracleDataReader dr = ((OracleRefCursor)p_3.Value).GetDataReader();
while (dr.Read())
{
Response.Write("Salt licked hash: "+ dr[0].ToString());
//Output the line retrieved from dbms_output.put line
Response.Write("<br />");
Response.Write("DBMS_OUTPUT STATUS: "+ p_3.Value.ToString());
}
tablename.myfunction returns Varchar2提案された変更を行い、新しいエラーが発生しました...私はそれが良いと思います。 ORA-06502:PL/SQL:数値または値のエラー:文字列バッファが小さすぎますORA-06512: "REDACTED_TABLE"、行77 ORA-06512: "REDACTED_TABLE"、行130 ORA-06512:行1 – Geekender
@ user834436 - 'REDACTED_TABLE'が関数名であると仮定すると、130行目と77行目は何ですか? –
ああ、私はそれがテーブルではない関数だと思います。簡単な質問ですが、これが現在のアクセス許可の問題になりますか?もしそうなら、C#のコードではなく、SQL Developerで動作するのはなぜですか? – Geekender