Select 从 Teradata 中的存储过程中输出的变量
Select a variable to output from within stored procedure in Teradata
我有一个已开始编码的存储过程,需要 return 一个值。在 SQL 服务器中,我可以将变量 SELECT 转换为 return。然而,这似乎不适用于 Teradata,并且没有找到关于如何执行此操作的类似示例。这是我的存储过程:
REPLACE PROCEDURE sp_Get_MyValue()
BEGIN
DECLARE mytestvar VARCHAR(40);
SELECT mycolumn INTO mytestvar FROM MyTable;
SELECT mytestvar;
END;
我收到这个错误:
STATEMENT 2: REPLACE failed. Failed [5526 : HY000] Stored Procedure
is not created/replaced due to error(s).{Nested Failure Msg [5526 :
HY000] SPL1045:E(L10), Invalid or missing INTO clause.}
我也试过向过程中添加一个 OUT 变量,但这也不起作用:
REPLACE PROCEDURE sp_Get_MyValue(mytestvarout VARCHAR(40))
BEGIN
DECLARE mytestvar VARCHAR(40);
SELECT mycolumn INTO mytestvar FROM MyTable;
END;
出现此错误:
Executed as Single statement. Failed [5531 : HY000] Named-list is not
supported for arguments of a procedure. Elapsed time = 00:00:00.079
对于 return 一行,您必须定义 OUT 变量并为其赋值:
REPLACE PROCEDURE sp_Get_MyValue(OUT mytestvarout VARCHAR(40))
BEGIN
DECLARE mytestvar VARCHAR(40);
SELECT mycolumn INTO mytestvar FROM MyTable;
SET mytestvarout = mytestvar;
END;
为了return一个结果集你需要定义一种dummy-cursor(怪标准SQL :-)
我有一个已开始编码的存储过程,需要 return 一个值。在 SQL 服务器中,我可以将变量 SELECT 转换为 return。然而,这似乎不适用于 Teradata,并且没有找到关于如何执行此操作的类似示例。这是我的存储过程:
REPLACE PROCEDURE sp_Get_MyValue()
BEGIN
DECLARE mytestvar VARCHAR(40);
SELECT mycolumn INTO mytestvar FROM MyTable;
SELECT mytestvar;
END;
我收到这个错误:
STATEMENT 2: REPLACE failed. Failed [5526 : HY000] Stored Procedure is not created/replaced due to error(s).{Nested Failure Msg [5526 : HY000] SPL1045:E(L10), Invalid or missing INTO clause.}
我也试过向过程中添加一个 OUT 变量,但这也不起作用:
REPLACE PROCEDURE sp_Get_MyValue(mytestvarout VARCHAR(40))
BEGIN
DECLARE mytestvar VARCHAR(40);
SELECT mycolumn INTO mytestvar FROM MyTable;
END;
出现此错误:
Executed as Single statement. Failed [5531 : HY000] Named-list is not supported for arguments of a procedure. Elapsed time = 00:00:00.079
对于 return 一行,您必须定义 OUT 变量并为其赋值:
REPLACE PROCEDURE sp_Get_MyValue(OUT mytestvarout VARCHAR(40))
BEGIN
DECLARE mytestvar VARCHAR(40);
SELECT mycolumn INTO mytestvar FROM MyTable;
SET mytestvarout = mytestvar;
END;
为了return一个结果集你需要定义一种dummy-cursor(怪标准SQL :-)