代码为:
create or replace procedure ts as
begin
select * from bbb;
end;
/运行是提示如下错误:
PROCEDURE TS 出现错误:LINE/COL ERROR
-------- -----------------------------------------------
3/1 PLS-00428: 在此 SELECT 语句中缺少 INTO 子句
3/1 PL/SQL: SQL Statement ignored这是什么原因。应如何决解决。
create or replace procedure ts as
begin
select * from bbb;
end;
/运行是提示如下错误:
PROCEDURE TS 出现错误:LINE/COL ERROR
-------- -----------------------------------------------
3/1 PLS-00428: 在此 SELECT 语句中缺少 INTO 子句
3/1 PL/SQL: SQL Statement ignored这是什么原因。应如何决解决。
解决方案 »
- 请教一句sql语句
- 我想连接orcale企业管理器,输入了http://计算名:5500/em/ 为什么连接不上呢,就像打不开网页一样
- oracle触发器的使用!!!(可否在一个表中做双触发器为什么一直出现错误,高手请看)
- 游标变量在asp中的使用问题
- 菜鸟请教!
- 郁闷!初学不知从何下手,散分
- 散分了,请教各位大虾,有关Oracle的简单问题,凡回答者均送分!
- oracle报表是怎样运行的?
- 频繁多表查询导致性能极差,求SQL大拿帮忙分析一下可以优化的地方。
- 求助Windows2008 下的Oracle :em-application.log文件过大,可以删除吗?
- Oracle Client 连接报错 ORA-12170: TNS:Connect timeout occurred
- ~~~~~~~~双表 联合查询问题 急急急急急急急急急 在线等~~~~~~~~
为什么要用存储过程输出表数据那么麻烦呢,
直接用select语句不就可以输出了吗,干嘛那么麻烦
错误:PLS-00103: 出现符号 "IMMEIDATE"在需要下列之一时:
:= . ( @ % ;
immediate
符号 ":=在 "IMMEIDATE" 继续之前已插入。我按照您写法。报以上错误怎么了?
(
v_player_id in varchar2,'这是你要传进来的值
v_player_name out varchar2,'这是你要输出的值
v_player_sex out varchar2,'这是你要输出的值
v_player_age out varchar2,'这是你要输出的值
v_team_id out varchar2'这是你要输出的值
)
as
begin
select player_name,player_sex,player_age,team_id into v_player_name,v_player_sex,v_player_age,v_team_id from t_03_player where player_id = v_player_id;
end;在java中的是这样写的public Team find2(String playerId) {
Connection conn = null;
//PreparedStatement pstmt = null;
CallableStatement cstmt = null;
//ResultSet rs = null;
String sql = "{call f_t_03_player(?,?,?,?,?)}";
Team team = new Team();
DBUtil util = new DBUtil();
conn = util.openConn();
try {
cstmt = conn.prepareCall(sql);
cstmt.setString(1, playerId);
cstmt.registerOutParameter(2, Types.VARCHAR);'在这里虽然你没有值,但是你也要注册一个数,这样才保证你用存储过程找出的值还能拿回来
cstmt.registerOutParameter(3, Types.VARCHAR);
cstmt.registerOutParameter(4, Types.VARCHAR);
cstmt.registerOutParameter(5, Types.VARCHAR);
cstmt.execute();
team.setPlayerId(playerId);
team.setPlayerName(cstmt.getString(2));
team.setPlayerSex(cstmt.getString(3));
team.setPlayerAge(cstmt.getString(4));
team.setTeamId(cstmt.getString(5));
System.out.println("========="+cstmt.getString(2));
System.out.println("========="+cstmt.getString(3));
System.out.println("========="+cstmt.getString(4));
System.out.println("========="+cstmt.getString(5));
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return team;
}
希望能对你有所帮助
2 as
3 begin
4 execute immediate 'select * from ttt';
5 end;
6 /过程已创建。已用时间: 00: 00: 00.32
sys@ORCL(192.168.21.110)> exec p_tt;PL/SQL 过程已成功完成。
create or replace procedure EMP_COUNT
as
v_total number;
begin
select count(*) into v_tatal from emp;
dbms_output.put_line('雇员总人数为:'||v_total);
end;调用存储过程的时候用execute EMP_COUNT 就可以了!
SQL> select * from ttt; ID DATE1
---------- --------------
2222
232SQL> create or replace procedure test_p
2 as
3 begin
4 for test_cursor in (select * from ttt) loop
5 dbms_output.put_line(test_cursor.id);
6 end loop;
7 end;
8 /过程已创建。SQL> exec test_pPL/SQL 过程已成功完成。SQL> set serveroutput on
SQL> exec test_p
2222
232PL/SQL 过程已成功完成。
用游标可以显示,但是多列的情况下比较麻烦