我有一个存储过程我已经开始编码并需要返回一个值。在SQL Server中,我可以只执行SELECT变量来返回它。然而,这似乎与Teradata无关,并且没有找到关于如何执行此操作的类似示例。这是我的存储过程:
REPLACE PROCEDURE sp_Get_MyValue()
BEGIN
DECLARE mytestvar VARCHAR(40);
SELECT mycolumn INTO mytestvar FROM MyTable;
SELECT mytestvar;
END;
我收到此错误:
声明2:REPLACE失败。失败[5526:HY000]存储过程 由于错误而未创建/替换。{Nested Failure Msg [5526: HY000] SPL1045:E(L10),INTO条款无效或缺失。}
我还尝试在程序中添加一个OUT变量,但这也不起作用:
REPLACE PROCEDURE sp_Get_MyValue(mytestvarout VARCHAR(40))
BEGIN
DECLARE mytestvar VARCHAR(40);
SELECT mycolumn INTO mytestvar FROM MyTable;
END;
出现此错误:
作为单一陈述执行。失败[5531:HY000]命名列表不是 支持程序的参数。经过时间= 00:00:00.079
答案 0 :(得分:3)
要返回单行,您必须定义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;
要返回结果集,您需要定义一种虚拟游标(责怪标准SQL: - )