Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在c中使用oledb执行pl sql块_C#_Sql_Visual Studio 2010_Plsql - Fatal编程技术网

C# 如何在c中使用oledb执行pl sql块

C# 如何在c中使用oledb执行pl sql块,c#,sql,visual-studio-2010,plsql,C#,Sql,Visual Studio 2010,Plsql,我正在使用C中的OLEDB执行Pl/Sql块。 代码是: string a1; a1 = discom1.Text.ToString(); my_querry10 = "BEGIN"+ "SELECT * from MasterCompliant WHERE Discom ='" + a1 + "';"+ "" + var1 + " = SQL%ROWCOUN

我正在使用C中的OLEDB执行Pl/Sql块。 代码是:

        string a1;
        a1 = discom1.Text.ToString();

        my_querry10 = "BEGIN"+
                      "SELECT * from MasterCompliant WHERE Discom ='" + a1 + "';"+
                      "" + var1 + " = SQL%ROWCOUNT;"+
                      "END;";
        OleDbCommand cmd12 = new OleDbCommand(my_querry10, conn);
        conn.Open();

        cmd12.ExecuteNonQuery();
"BEGIN"+
"SELECT * from MasterCompliant WHERE Discom ='" + a1 + "'"+
"" + var1 + " = SQL%ROWCOUNT;"+
"END;"
例外情况出现在以下声明中:

"BEGIN"+
"SELECT * from MasterCompliant WHERE Discom ='" + a1 + "'"+
"" + var1 + " = SQL%ROWCOUNT;"+
"END;"
cmd12.ExecuteOnQuery作为 SQL语句无效;应为“删除”、“插入”、“过程”、“选择”或“更新”

"BEGIN"+
"SELECT * from MasterCompliant WHERE Discom ='" + a1 + "'"+
"" + var1 + " = SQL%ROWCOUNT;"+
"END;"
MasterCompliant是表名;Discom是列名,var1是整数。

删除a1附近的分号

"BEGIN"+
"SELECT * from MasterCompliant WHERE Discom ='" + a1 + "'"+
"" + var1 + " = SQL%ROWCOUNT;"+
"END;"
Discom='+a1+';+到Discom='+a1+'+

"BEGIN"+
"SELECT * from MasterCompliant WHERE Discom ='" + a1 + "'"+
"" + var1 + " = SQL%ROWCOUNT;"+
"END;"

在我看来,您根本不需要单独的块来完成此操作-您可以使用SELECT COUNT1和ExecuteScalar:

"BEGIN"+
"SELECT * from MasterCompliant WHERE Discom ='" + a1 + "'"+
"" + var1 + " = SQL%ROWCOUNT;"+
"END;"
您可能需要将其转换为long而不是int-您基本上应该试试看

"BEGIN"+
"SELECT * from MasterCompliant WHERE Discom ='" + a1 + "'"+
"" + var1 + " = SQL%ROWCOUNT;"+
"END;"

请注意,使用参数化查询如何使SQL更易于读取并防止其失效。

。。删除分号后也会出现类似的异常。字符串以BEGINSTART开头-这不是一个很好的起点。您还将参数直接放入SQL字符串中,这是一个非常糟糕的主意。改用参数化SQL。您真的需要执行一个块而不是一个命令吗?不清楚您试图在这里实现什么。我的任务是:从Discom列名中搜索字符串“a1”,并尝试使用SQL和ROWCOUNT在整数“var1”中检索其计数。即使您更正了语法错误,此块也无法正常工作。您正在执行一个SELECT语句,您应该在其中打开一个游标。此外,您正试图从PL/SQL块内部将SQL%ROWCOUNT分配给C变量var1—这不会起作用,因为PL/SQL不知道您的C或VB或任何变量。和-使用赋值运算符:=。请看一看哪一个显示了如何从匿名块中获取值。祝你好运。
"BEGIN"+
"SELECT * from MasterCompliant WHERE Discom ='" + a1 + "'"+
"" + var1 + " = SQL%ROWCOUNT;"+
"END;"