对于@table_result, @后是自定义参数,不是返回值。
存储过程执行完成后会自动返回集合的,因为你执行的是一条select语句,不用return。
存储过程没有return语句
你需要的功能, 是不是 一个 叫做 “表值函数” 的东西?
SQL Server 通过 RETURN TABLE 来实现。
1> CREATE FUNCTION getHelloWorld()
2> RETURNS TABLE
3> AS
4> RETURN
5> SELECT 'Hello' AS A, 'World' AS B;
6> GO
1> SELECT * FROM getHelloWorld();
2> go
A B
----- -----
Hello World
(1 行受影响)
如果返回的结果, 不是简单的一个 SQL 语句的, 而是比较复杂的业务逻辑的
CREATE FUNCTION getTestTable()
RETURNS @result TABLE(A int, B int, C int)
AS
BEGIN
INSERT INTO @result VALUES(1, 2, 3);
INSERT INTO @result VALUES(4, 5, 6);
INSERT INTO @result VALUES(7, 8, 9);
RETURN;
END;
SELECT * FROM getTestTable();
A B C
1 2 3
4 5 6
7 8 9