我编写了一个存储过程,用于将值插入到主键自动递增的表中。当我尝试在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
答案 0 :(得分:1)
您的存储过程不进行任何数据检索操作(即任何SELECT
)。它只是INSERT
加上一些变量操作。那些SELECT
那里只分配变量,所以没有什么真正产生任何结果集。
因此,客户端程序是完全正确的,因为此过程没有列或任何类型的输出。也许你打算添加某种返回表?
答案 1 :(得分:0)
将存储过程视为前端应用程序的数据源。现在它拥有数据,它必须以SELECT
子句结束,因为只有这样它才能拥有数据。显然,您的应用程序期待数据。所以没有详细介绍,
可能你需要在存储过程或类似的东西中添加SELECT * FROM Tbl_Name
。