在函数导入中,所选存储过程 returns 无列

In Function Import, The selected stored procedure returns no columns

我编写了一个存储过程,用于将值插入 table,其中主键将自动递增。当我尝试在 Visual Studio 2013 中导入它时,在函数导入时 select "Get Column Information" 它说 "The selected procedure or function" returns 没有列。

我阅读了很多关于它的文章,还在我的代码中包含了 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   

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

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

将存储过程视为前端应用程序的数据源。现在它要有数据,它必须以 SELECT 子句结尾,因为只有这样它才能有数据。很明显,您的应用程序 需要 数据。因此,无需赘述,

  1. 您是否需要告诉您的应用程序停止接收数据。
  2. 或者,修改程序,使其开始提供数据。

可能您需要在存储过程或类似内容的末尾添加一个 SELECT * FROM Tbl_Name