oracle创建存储过程 有小红叉, 存储过程新手,请高手不吝赐教,, 语句如下:

CREATE OR REPLACE PROCEDURE P_TF_F_HOT_CHECK(
title in varchar2
)
IS
BEGIN
SELECT HOT_ID, HOT_TITLE,KEYWORD FROM TF_F_HOT WHERE HOT_TITLE = title;
END;

说一下你的问题
在存储过程中,一个select语句中,查找的字段必须要放到变量中
也就是
select 字段1 into 变量1 from 表名 where 条件;
这样才不会报错

而你这个,没什么实际的意义
你要是非想让它不红叉,可以这样
CREATE OR REPLACE PROCEDURE P_TF_F_HOT_CHECK
( title in varchar2)
IS
v_hot_id int;
v_hot_title varchar2(200);
v_keyword varchar2(200);
BEGIN
SELECT HOT_ID,HOT_TITLE,KEYWORD into v_hot_id,v_hot_title,v_keyword FROM TF_F_HOT WHERE HOT_TITLE = title;
END;

变量类型你自己再改一下追问

那怎么把它弄的有意思哦, 之前我想的是 能够不报错, 但是这样运行, 好像没什么效果。。
我想学习一下存储过程, 想写一个, 执行 输入的条件, 查询出结果的 存储过程

追答

恩,这样
假如,你那个select 只能 查询到一条结果

CREATE OR REPLACE PROCEDURE P_TF_F_HOT_CHECK
( title in varchar2)
IS
v_hot_id int;
v_hot_title varchar2(200);
v_keyword varchar2(200);
BEGIN
SELECT HOT_ID,HOT_TITLE,KEYWORD into v_hot_id,v_hot_title,v_keyword FROM TF_F_HOT WHERE HOT_TITLE = title;
dbms_output.put_line(v_hot_id||‘,'||v_hot_title||','||v_keyword);
END;

上边这是个创建的过程
执行的话
begin
P_TF_F_HOT_CHECK('你输入那个title的值');
end;

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-09
CREATE OR REPLACE PROCEDURE P_TF_F_HOT_CHECK(
title in varchar2
)
IS
BEGIN
SELECT HOT_ID, HOT_TITLE,KEYWORD FROM TF_F_HOT WHERE HOT_TITLE = title;
END;

第四行的换成as试试