VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 6893|回复: 37

今天第一次接触ORCALE,咋得就那么不习惯....

[复制链接]

2

主题

21

帖子

18.00

积分

新手上路

Rank: 1

积分
18.00
发表于 2020-1-21 16:00:01 | 显示全部楼层 |阅读模式
写一个简单得不能再简单的存储过程.存在很多疑问.
CREATE OR REPLACE PROCEDURE TEST
(CODE IN CHAR) --这里我指定了CHAR为什么不能指定长度(VARCHAR好象也一样):CHAR(2)?
AS
BEGIN
  DBMS_OUTPUT.put_line(CODE); --这里有没有象SQL SERVER的PRINT类似的方法....可以少敲几个字.
END;


EXECUTE TEST('AA');--这里怎么就提示说SQL有错..

哎.第一次就那么多问题.怎么SQL SERVER感觉很好用的嘛.
回复

使用道具 举报

2

主题

21

帖子

18.00

积分

新手上路

Rank: 1

积分
18.00
 楼主| 发表于 2020-1-31 06:09:01 | 显示全部楼层
查了一下坛子.发现在ORACLE中执行PRO是否要这样?
set serveroutput on
exec TEST('AA');

试了一下还是SQL错误.
参考以下:
CREATE OR REPLACE PROCEDURE HELLO_PRO(STR  VARCHAR2) AS
BEGIN
DBMS_OUTPUT.PUT_LINE(STR);
END;

SQL> set serveroutput on
SQL> exec hello_pro('he');

回复

使用道具 举报

2

主题

21

帖子

18.00

积分

新手上路

Rank: 1

积分
18.00
 楼主| 发表于 2020-1-31 19:09:01 | 显示全部楼层
呵呵 .谢谢.刚刚又查资料说执行存储过程要加上OWNER,
EXECUTE SYS.TEST('AA');
同样错误.
回复

使用道具 举报

0

主题

13

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-2-1 14:18:01 | 显示全部楼层
SQL> CREATE OR REPLACE PROCEDURE HELLO_PRO(STR  VARCHAR2) AS
  2   BEGIN
  3   DBMS_OUTPUT.PUT_LINE(STR);
  4   END;
  5  /

Procedure created

SQL> set serveroutput on
SQL> exec hello_pro('he');
he

PL/SQL procedure successfully completed
回复

使用道具 举报

2

主题

21

帖子

18.00

积分

新手上路

Rank: 1

积分
18.00
 楼主| 发表于 2020-2-1 18:36:01 | 显示全部楼层
SQL> CREATE OR REPLACE PROCEDURE HELLO_PRO(STR  VARCHAR2) AS
  2   BEGIN
  3   DBMS_OUTPUT.PUT_LINE(STR);
  4   END;
  5  /
正确.

set serveroutput on;
exec hello_pro('he');
错误.
回复

使用道具 举报

0

主题

5

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-2-1 20:27:01 | 显示全部楼层
wang7498
这句 set serveroutput on 后面没有分号';'
回复

使用道具 举报

2

主题

21

帖子

18.00

积分

新手上路

Rank: 1

积分
18.00
 楼主| 发表于 2020-2-1 22:36:01 | 显示全部楼层
有的.肯定不是这个问题.
回复

使用道具 举报

0

主题

71

帖子

50.00

积分

新手上路

Rank: 1

积分
50.00
发表于 2020-2-10 19:45:02 | 显示全部楼层
set serveroutput on
不能有分号的
回复

使用道具 举报

0

主题

10

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-2-14 20:45:01 | 显示全部楼层
习惯成自然 多多尝试和练习就会好多了

你能把你的具体的错误信息贴出来看看吗?
回复

使用道具 举报

2

主题

21

帖子

18.00

积分

新手上路

Rank: 1

积分
18.00
 楼主| 发表于 2020-2-16 09:00:02 | 显示全部楼层
CREATE OR REPLACE PROCEDURE "SYS"."TEST"
(CODE IN CHAR)
AS
BEGIN
  DBMS_OUTPUT.put_line(CODE);
END;
这个是对的.
然后执行部分:

EXECUTE TEST('AA')
错误信息:ORA-00900:无效SQL语句

EXECUTE SYS.TEST('AA');
一样的错误信息.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表