C# 为什么我的sql查询在ExecuteOnQuery方法中格式不正确?

C# 为什么我的sql查询在ExecuteOnQuery方法中格式不正确?,c#,sql,stored-procedures,C#,Sql,Stored Procedures,我有一个包含以下参数的存储过程: ALTER PROCEDURE [dbo].[myStoredProc] -- Add the parameters for the stored procedure here @myParam1 nvarchar(50), @myParam2 date, @myParam3 date, @myParam4 time, @myParam5 time, @myParam6 int = 1, @myParam7 nvarchar(50), @myParam8 in

我有一个包含以下参数的存储过程:

ALTER PROCEDURE [dbo].[myStoredProc] 
-- Add the parameters for the stored procedure here
@myParam1 nvarchar(50),
@myParam2 date,
@myParam3 date,
@myParam4 time,
@myParam5 time,
@myParam6 int = 1,
@myParam7 nvarchar(50),
@myParam8 int,
@myParam9 nvarchar(50),
@myParam10 nvarchar(500),
@myParam11 nvarchar(100) = NULL,
@myParam12 nvarchar(1000) = NULL,
@myParam13 nvarchar(100) = NULL,
@myParam14 nvarchar(1000) = NULL,
@myParam15 date = NULL,
@myParam16 bit = NULL,
@myParam17 nvarchar(50) = NULL,
@myParam18 nvarchar(50) = NULL,
@myParam19 nvarchar(500) = NULL,
@myParam20 bit = NULL,
@myParam21 nvarchar(50) = NULL,
@myParam22 nvarchar(50) = NULL,
@myParam23 nvarchar(50) = NULL,
@myParam24 nvarchar(50) = NULL,
@myParam25 nvarchar(500) = NULL,
@myParam26 int = NULL,
@myParam27 int = NULL
作为

这就是我用C#来称呼它的方式:

当我执行代码时,会得到一个格式错误的字符串(在SQL分析器中):

我不知道为什么字符串中有类型和长度(nvarchar,time…)。有什么想法吗?我尝试使用
AddWithParameter
方法,但得到了相同的字符串。

请参阅。您缺少的是另一个
EXEC

string sqlQuery = "exec [dbo].[myStoredProc] ..."
这将生成以下SQL:

exec sp_executesql N'exec [dbo].[myStoredProc] ...'
或者,您可以使用所述的
CommandType.storedProcess

请参阅。您缺少的是另一个
EXEC

string sqlQuery = "exec [dbo].[myStoredProc] ..."
这将生成以下SQL:

exec sp_executesql N'exec [dbo].[myStoredProc] ...'

或者,您可以使用所述的
CommandType.storedProcess

您需要指定'EXEC[dbo].[myStoredProc]`或将
SqlCommand
类型设置为Procedure!标记所使用的dbms。这段代码看起来一点也不像ANSI SQL。你说它“格式不好”——但它真的会给你带来问题吗?您是否收到错误消息(如果是,是什么?)。您是否仅仅反对字符串参数的长度(如果是这样,您应该能够在C代码中指定所需的长度)?您需要指定'EXEC[dbo].[myStoredProc]`或将
SqlCommand
type设置为Procedure!标记所使用的dbms。这段代码看起来一点也不像ANSI SQL。你说它“格式不好”——但它真的会给你带来问题吗?您是否收到错误消息(如果是,是什么?)。您的反对仅仅是字符串参数的长度吗(如果是,您应该能够在C#代码中指定您想要的长度)?事实上是这样的!我保留字符串sqlQuery=“[dbo].[myStoredProc]”;但是指定的CommandType.StoredProcedureI现在在Context.Database.ExecuteSqlCommand上有同样的问题,并且无法将查询指定为存储过程:-/I认为
ExecuteSqlCommand()
期望
exec[dbo].[MyStoredProc]
syntaxit实际上就是这样!我保留字符串sqlQuery=“[dbo].[myStoredProc]”;但是指定的CommandType.StoredProcedureI现在在Context.Database.ExecuteSqlCommand上有同样的问题,并且无法将查询指定为存储过程:-/I认为
ExecuteSqlCommand()
需要
exec[dbo].[MyStoredProc]
语法