oracle - 每行的输出返回
问题描述
我的目标是返回类似“星球大战可用:货架上的 11 部”这样的语句,但是当我查询该函数时,我的输出是为每个电影 ID 返回该语句,而不仅仅是函数输入的那个。我知道我忽略了一些简单的事情,但我只需要我的电话来提取提供的电影 ID 的声明。(使用 SQL 开发人员)
CREATE OR REPLACE FUNCTION QTY_MSG_SF
(p_movieID mm_movie.movie_id %TYPE)
RETURN VARCHAR2
AS
lv_message_txt VARCHAR2(50);
lv_title_txt mm_movie.movie_title%TYPE;
lv_qty_num MM_MOVIE.MOVIE_QTY%TYPE;
BEGIN
SELECT movie_title, movie_qty
INTO lv_title_txt, lv_qty_num
FROM mm_movie
WHERE movie_id = p_movieID;
IF (lv_qty_num > 0) THEN
lv_message_txt := (lv_title_txt || ' is available: ' || lv_qty_num || ' on the shelf');
ELSE
lv_message_txt := (lv_title_txt || ' is not available');
END IF;
RETURN lv_message_txt;
END QTY_MSG_SF;
我的电话:
SELECT qty_msg_sf(2)
FROM mm_movie;
解决方案
但是当我查询函数时,我的输出会为每个电影 ID 返回该语句,而不仅仅是函数输入的那个。我知道我忽略了一些简单的事情,
您的代码是正确的,但看起来您可能没有正确调用它,或者表的所有电影 id 都相同。请参阅下面的代码演示,它按我的预期工作。
create table mm_movie(movie_id number,movie_title varchar2(50), movie_qty number);
/
insert into mm_movie values (1,'WarDogs',11);
insert into mm_movie values (2,'Star War',19);
/
Select * from mm_movie;
/
CREATE OR REPLACE FUNCTION QTY_MSG_SF(p_movieID mm_movie.movie_id %TYPE)
RETURN VARCHAR2 AS
lv_message_txt VARCHAR2(50);
lv_title_txt mm_movie.movie_title%TYPE;
lv_qty_num MM_MOVIE.MOVIE_QTY%TYPE;
BEGIN
SELECT movie_title,
movie_qty
INTO lv_title_txt,
lv_qty_num
FROM mm_movie
WHERE movie_id = p_movieID;
IF (lv_qty_num > 0)
THEN
lv_message_txt := (lv_title_txt || ' is available: ' || lv_qty_num ||
' on the shelf');
ELSE
lv_message_txt := (lv_title_txt || ' is not available');
END IF;
RETURN lv_message_txt;
END QTY_MSG_SF;
执行
SQL>Select QTY_MSG_SF(2) from dual;
Col
---
Star War is available: 19 on the shelf
SQL>Select QTY_MSG_SF(1) from dual;
Col
---
WarDogs is available: 11 on the shelf
推荐阅读
- c++ - C++,调用相同函数时删除重复
- css - 创建响应式 3 x 3 画廊框
- ios - 我可以在不添加情节提要的情况下更新现有的 iOS 应用吗?
- python - 与其他用户共享 Python ChatBot
- node.js - 嵌套构建在管道中失败:找不到在本地构建时可以找到的模块
- python - 将python try-except(或try-catch)代码块转换为基本excel-selenium应用程序的VBA
- wso2 - esb 微服务中的 TIBCO JMS 监听器
- emacs - 我无法安装 org-checklist
- java - 有没有办法根据 Spring 配置文件禁用 Testcontainers?
- sql-server - 为什么来自 exec 的赋值变量值在 T-SQL 中不起作用?