我有一个已开始编码的存储过程,需要返回一个值。在 SQL Server 中,我只需对变量执行 SELECT 操作即可返回它。然而,这似乎不适用于 Teradata,并且没有找到有关如何执行此操作的类似示例。这是我的存储过程:
REPLACE PROCEDURE sp_Get_MyValue()
BEGIN
DECLARE mytestvar VARCHAR(40);
SELECT mycolumn INTO mytestvar FROM MyTable;
SELECT mytestvar;
END;
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
语句 2:替换失败。失败 [5526 : HY000] 由于错误,未创建/替换存储过程。{嵌套失败消息 [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;
Run Code Online (Sandbox Code Playgroud)
出现此错误:
作为单个语句执行。失败 [5531:HY000] 过程的参数不支持命名列表。已用时间 = 00:00:00.079
要返回单行,您必须定义 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;
Run Code Online (Sandbox Code Playgroud)
要返回结果集,您需要定义一种虚拟游标(归咎于标准 SQL :-)
| 归档时间: |
|
| 查看次数: |
8344 次 |
| 最近记录: |