C# SQL 2000:存储过程错误:过程或函数';名称';应为参数'@参数';,这是没有提供的

C# SQL 2000:存储过程错误:过程或函数';名称';应为参数'@参数';,这是没有提供的,c#,asp.net,stored-procedures,C#,Asp.net,Stored Procedures,我有一个存储过程,声明如下: ALTER PROCEDURE dbo.thisProc @ID int,@TypeID int, @DocID int, @Section varchar(10) 我需要的是能够做到这一点: 如果提供了@ID,则执行特定的If块 如果未提供@ID,则移动检查是否输入了@TypeID,然后执行另一个if块 我不想编写多个sql查询来处理用户正在查看的不同输入/页面部分 谢谢 示例代码: CREATE PROCEDURE GetArticle

我有一个存储过程,声明如下:

    ALTER PROCEDURE dbo.thisProc
 @ID int,@TypeID int, @DocID int, @Section varchar(10)
我需要的是能够做到这一点:

如果提供了@ID,则执行特定的If块 如果未提供@ID,则移动检查是否输入了@TypeID,然后执行另一个if块

我不想编写多个sql查询来处理用户正在查看的不同输入/页面部分

谢谢

示例代码:

    CREATE PROCEDURE GetArticle
    @ID int,@DoTypeID int, @DocID int, @Sec varchar(10)
AS
IF @ID IS NOT NULL AND , @DocID IS NOT NULL  AND @Sec = 'inner'
BEGIN
  SELECT  "my query is here" 

WHERE Articles.ID = @ID AND Articles.DocID = @DocID  

END
ELSE IF @ID IS NULL AND @DocID  IS NULL  AND @Sec  = 'list'
BEGIN
    EXEC GetDocList @DocTypeID
END

ELSE IF @ID IS NULL AND @DocID  IS NULL  AND @Sec = 'full'
BEGIN
EXEC GetDocList @DocTypeID
END

只需给@id一个默认值null。例如

@id int = null

如果你不想使用ID-1,你能不能只提供ID-1并使用if设施?我不认为这是明智的,SLC。这样的特殊价值观总是以混乱告终@Kenyana,从您的需求来看,您正在编写多个SQL过程,但将它们都塞进同一个“过程”。是的,Brian。我想根据提供的输入运行多个过程。问题是输入不必存在。我可能会提供3或2个变量。这可以在SP中工作吗?或者我必须在我的.cs文件中对此进行编码,然后使用2个输入来运行该过程……并且不要在该参数中传递任何值。也就是说,您不必在@id参数中传递空值,只需不包含它即可。我猜这就是他正在做的事情,因此出现了“缺少参数”错误消息;-)