在函数导入中,所选存储过程 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
子句结尾,因为只有这样它才能有数据。很明显,您的应用程序 需要 数据。因此,无需赘述,
- 您是否需要告诉您的应用程序停止接收数据。
- 或者,修改程序,使其开始提供数据。
可能您需要在存储过程或类似内容的末尾添加一个 SELECT * FROM Tbl_Name
。
我编写了一个存储过程,用于将值插入 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
子句结尾,因为只有这样它才能有数据。很明显,您的应用程序 需要 数据。因此,无需赘述,
- 您是否需要告诉您的应用程序停止接收数据。
- 或者,修改程序,使其开始提供数据。
可能您需要在存储过程或类似内容的末尾添加一个 SELECT * FROM Tbl_Name
。