在“函数导入”中,所选存储过程不返回任何列

时间:2015-04-10 01:36:52

标签: c# asp.net sql-server stored-procedures

我编写了一个存储过程,用于将值插入到主键自动递增的表中。当我尝试在Visual Studio 2013中导入它时,在函数导入时选择"获取列信息"它说"选择的程序或功能"不返回任何列。

我读了很多文章,并且在我的代码中也包含了SET FMTONLY OFF,但它仍然不起作用。 ASP.Net和C#中的业余爱好者。所以任何人都可以向我解释以明确的方式做什么

      USE [DB_Name]
      GO
      /****** Object:  StoredProcedure [dbo].[usp_makePost]    Script Date:   04-04-2015 19:16:04 ******/
     SET FMTONLY OFF
     GO
     SET ANSI_NULLS ON
     GO
     SET QUOTED_IDENTIFIER ON
     GO
     CREATE procedure [dbo].[usp_makePost]
        @FK_strUser_Id varchar(11),
        @strPost_Title varchar(100),
        @strPost_Content varchar(1000),
        @dTime_of_post datetime,
        @iUp_Vote int,
        @iDown_Vote int,
        @FK_strRootword_Id varchar(11)
     as 
     begin

     DECLARE @PK_strPost_Id VARCHAR(11);
     DECLARE @PreFix VARCHAR(10) = 'POST';
     DECLARE @Id INT;

     SELECT @Id = ISNULL(COUNT(PK_strPost_Id),0) + 1 FROM Tbl_Post
     SELECT @PK_strPost_Id = @PreFix + RIGHT('0000' + CAST(@Id AS VARCHAR(7)), 7)
     insert into Tbl_Name values(@PK_strPost_Id,@FK_strUser_Id,@strPost_Title,@strPost_Content,@dTime_of_post,@iUp_Vote,@iDown_Vote,@FK_strRootword_Id)
      end   

2 个答案:

答案 0 :(得分:1)

您的存储过程不进行任何数据检索操作(即任何SELECT)。它只是INSERT加上一些变量操作。那些SELECT那里只分配变量,所以没有什么真正产生任何结果集。

因此,客户端程序是完全正确的,因为此过程没有列或任何类型的输出。也许你打算添加某种返回表?

答案 1 :(得分:0)

将存储过程视为前端应用程序的数据源。现在它拥有数据,它必须以SELECT子句结束,因为只有这样它才能拥有数据。显然,您的应用程序期待数据。所以没有详细介绍,

  1. 您需要告诉您的应用程序停止预期数据。
  2. 或者,修改程序以便开始提供数据。
  3. 可能你需要在存储过程或类似的东西中添加SELECT * FROM Tbl_Name