【问题标题】:In Function Import, The selected stored procedure returns no columns在函数导入中,选定的存储过程不返回任何列
【发布时间】:2015-04-10 17:12:57
【问题描述】:

我编写了一个存储过程来将值插入到主键将自动递增的表中。当我尝试在 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   

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 它不必以SELECT 结束结束,它可以在任何地方,只要它被执行。此外,可以有多个,不要忘记返回值和输出参数,如果应用程序准备好在合适的时候使用它们。
      猜你喜欢
      • 2016-11-28
      • 2016-02-11
      • 2011-10-31
      • 2014-09-27
      • 2018-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多