【发布时间】:2015-02-14 05:23:12
【问题描述】:
我对 sql 和 teradata(6 周)完全陌生。并被分配了一项任务,几乎没有任何指示。
(创建一个存储过程,允许用户使用存储过程选择球棒的制造商和(可选)序列号。输出应显示使用球棒制造商的所有玩家。如果还提供了序列号,则仅显示使用该球棒制造商和序列号的玩家。确保使用 CREATE PROCEDURE 调用并将此过程插入现有数据库。)这是一个通过 teradata 复制到我自己的数据库中以进行编辑的数据库。这是我到目前为止得到的,它不断返回两个错误。我很想为快速有效地学习 sql 提供解决方案和最佳建议。我提前感谢您的帮助。我确信这是你见过的最丑陋的代码,我很抱歉。 :-D
CREATE PROCEDURE batman(manuf varchar(20), bat_type varchar(4)=null)
DYNAMIC RESULT SETS 2
BEGIN
DECLARE c CURSOR FOR
SELECT playernum
FROM affiliation, bats
WHERE manuf = :manuf;
declare serial cursor for
select playernum
from affiliation
where bat_type=NULL or bat_type=:bat_type
if bat_type=NULL then open c
else open serial;
end if;
END;
【问题讨论】:
-
您收到什么错误?
-
SPL1076:E(L1),缺少参数声明中的右括号。 SPL1048:E(L1),意外的文本 ';'代替 SPL 语句。
-
对于您的
bat_type声明,要定义默认值,您可以使用bat_type varchar(4) default NULL。 -
非常感谢,它成功了!
标签: sql stored-procedures teradata