gpt4 book ai didi

c# - 使用 SQL 存储函数给出无效的 SQL 语句

转载 作者:太空宇宙 更新时间:2023-11-03 14:25:35 25 4
gpt4 key购买 nike

我正在尝试在 C# 应用程序中使用 Oracle Express 数据库中的存储函数。

OdbcCommand com = new OdbcCommand("SILNIA",sqlConn);
com.CommandType = CommandType.StoredProcedure;

OdbcParameter sqlParam = new OdbcParameter("@ReturnValue", OdbcType.Int);
sqlParam.Direction = ParameterDirection.ReturnValue;
com.Parameters.Add(sqlParam);
com.ExecuteNonQuery();

label1.Content = com.Parameters["@ReturnValue"].Value.ToString();

定义 SILNIA 函数(编译无错误)的地方:

create or replace
FUNCTION SILNIA RETURN NUMBER IS
w NUMBER := 1;
BEGIN
for i in 1..5 loop
w:=w*i;
end loop;

RETURN w;
END SILNIA;

在线:

com.ExecuteNonQuery();

我明白了

ERROR [42000] [Microsoft][ODBC driver for Oracle][Oracle]ORA-00900: invalid SQL statement.

但是这个工作没有任何问题:

OdbcCommand sqlCom = new OdbcCommand("SELECT SILNIA() FROM DUAL", sqlConn);
label1.Content = sqlCom.ExecuteScalar().ToString();

最佳答案

您不能使用 ExecuteNonQuery() 来运行 SP。您必须做其他事情——ExecuteScalar 或 ExecuteReader

这是因为 ExecuteNonQuery() 设计为仅适用于 UPDATE、INSERT 和 DELETE 语句。

关于c# - 使用 SQL 存储函数给出无效的 SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4174968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com