我来自实体框架背景,我没有做很多纯SQL开发。
但是,在处理EF时,我们可以这样做:
var persons = from x in db.Person
where x.Name.Equals("Something")
select x;
或
IQuerable<Person> persons = from x in db.Person
where x.Name.Equals("Something")
select x;
但是在处理存储过程时,如何才能完全完成,例如我可以通过声明DECLARE @Name NVARCHAR(15)
来捕获变量,但是如何获取返回的表结果?
答案 0 :(得分:2)
创建一个表变量并将数据插入:
DECLARE @Person table(
FirstName nvarchar(15),
LastName nvarchar(15)
);
Insert Into @Person(FirstName, LastName)
Select Firstname, LastName
From Person
Where LastName = @LastName; -- where @lastname comes from a sp parameter.
现在做像
这样的事情Select count(*) from @Person;
答案 1 :(得分:0)
只需声明一个表变量:
DECLARE @TableVariable TABLE
(
PrimaryKey INT,
Name NVARCHAR(MAX)
)
并将结果插入此表。
答案 2 :(得分:0)
@ ps2goat回答的一种方式。如果您希望将存储过程输出到表中,那么您可以这样做: -
DECLARE @Person table
(
Id Int Identity(1,1)
,FirstName nvarchar(15)
,LastName nvarchar(15)
);
Insert Into @Person(FirstName,LastName)
Exec dbo.USP_SomeStoredProcedure <sp's parameters>;
Select Top 1
FirstName
,LastName
From @Person As p
Order By p.Id Asc
注意: - 您的调用过程输出和表列完全匹配应该是相同的
答案 3 :(得分:-2)
我自己找到了正确的答案。我想我必须使用游标,这是最好的。