oracle的存储过程和pl/sql有什么联系,另外存储过程的语法都一样吗?
推荐于2018-04-14
展开全部
oracle的存储过程 和 pl/sql 的关系是:
pl/sql 是一门语言, 用来写 oracle的存储过程。
oracle、sqlserver、mysql 的存储过程语法。 只能说是 某些地方 相同, 某些地方有差异。
我就列一下, 3种数据库的 存储过程的一个对比例子, 你可以对比着参考参考。
首先是 Oracle 的
注:CREATE OR REPLACE 没有就创建,有的话就更新。 请注意, 定义存储过程内使用的变量, 不需要加 DECLARE 关键字。
多个变量之间用分号分隔。
SQL> CREATE OR REPLACE PROCEDURE HelloWorld AS
2 testvalue1 VARCHAR2(20);
3 testvalue2 VARCHAR2(20);
4 BEGIN
5 dbms_output.put_line('Hello World');
6 testvalue1 := 'First Test! ';
7 SELECT 'Second Test !' INTO testvalue2 FROM DUAL;
8 dbms_output.put_line( testvalue1 || testvalue2 );
9 END HelloWorld;
10 /
过程已创建。
SQL> set serveroutput on
SQL>
SQL> BEGIN
2 HelloWorld();
3 END;
4 /
Hello World
First Test! Second Test !
PL/SQL 过程已成功完成。
SQL Server 的
请注意, 定义存储过程内使用的变量, 需要加 DECLARE 关键字。 多个变量之间用逗号分隔。
1> CREATE PROCEDURE HelloWorld AS
2> DECLARE
3> @testvalue1 AS VARCHAR(20),
4> @testvalue2 AS VARCHAR(20);
5> BEGIN
6> PRINT 'Hello World';
7> SET @testvalue1 = 'First Test !';
8> SELECT @testvalue2 = 'Second Test !';
9> PRINT( @testvalue1 + @testvalue2);
10> END;
11> go
1> DECLARE @RC int
2> EXECUTE @RC = HelloWorld
3> PRINT @RC
4> go
Hello World
First Test !Second Test !
0
MySQL 的
MySQL 存储过程名字后面的“()”是必须的,即使没有一个参数,也需要“()”
DELIMITER //
CREATE PROCEDURE HelloWorld()
BEGIN
DECLARE testvalue1 VARCHAR(20);
DECLARE testvalue2 VARCHAR(20);
SELECT 'Hello World';
SET testvalue1 = 'First Test !';
SELECT 'Second Test !' INTO testvalue2;
SELECT CONCAT( testvalue1 , testvalue2 );
END //
DELIMITER ;
mysql> call HelloWorld();
+-------------+
| Hello World |
+-------------+
| Hello World |
+-------------+
1 row in set (0.00 sec)
+-----------------------------------+
| CONCAT( testvalue1 , testvalue2 ) |
+-----------------------------------+
| First Test !Second Test ! |
+-----------------------------------+
1 row in set (0.01 sec)
Query OK, 0 rows affected (0.02 sec)
pl/sql 是一门语言, 用来写 oracle的存储过程。
oracle、sqlserver、mysql 的存储过程语法。 只能说是 某些地方 相同, 某些地方有差异。
我就列一下, 3种数据库的 存储过程的一个对比例子, 你可以对比着参考参考。
首先是 Oracle 的
注:CREATE OR REPLACE 没有就创建,有的话就更新。 请注意, 定义存储过程内使用的变量, 不需要加 DECLARE 关键字。
多个变量之间用分号分隔。
SQL> CREATE OR REPLACE PROCEDURE HelloWorld AS
2 testvalue1 VARCHAR2(20);
3 testvalue2 VARCHAR2(20);
4 BEGIN
5 dbms_output.put_line('Hello World');
6 testvalue1 := 'First Test! ';
7 SELECT 'Second Test !' INTO testvalue2 FROM DUAL;
8 dbms_output.put_line( testvalue1 || testvalue2 );
9 END HelloWorld;
10 /
过程已创建。
SQL> set serveroutput on
SQL>
SQL> BEGIN
2 HelloWorld();
3 END;
4 /
Hello World
First Test! Second Test !
PL/SQL 过程已成功完成。
SQL Server 的
请注意, 定义存储过程内使用的变量, 需要加 DECLARE 关键字。 多个变量之间用逗号分隔。
1> CREATE PROCEDURE HelloWorld AS
2> DECLARE
3> @testvalue1 AS VARCHAR(20),
4> @testvalue2 AS VARCHAR(20);
5> BEGIN
6> PRINT 'Hello World';
7> SET @testvalue1 = 'First Test !';
8> SELECT @testvalue2 = 'Second Test !';
9> PRINT( @testvalue1 + @testvalue2);
10> END;
11> go
1> DECLARE @RC int
2> EXECUTE @RC = HelloWorld
3> PRINT @RC
4> go
Hello World
First Test !Second Test !
0
MySQL 的
MySQL 存储过程名字后面的“()”是必须的,即使没有一个参数,也需要“()”
DELIMITER //
CREATE PROCEDURE HelloWorld()
BEGIN
DECLARE testvalue1 VARCHAR(20);
DECLARE testvalue2 VARCHAR(20);
SELECT 'Hello World';
SET testvalue1 = 'First Test !';
SELECT 'Second Test !' INTO testvalue2;
SELECT CONCAT( testvalue1 , testvalue2 );
END //
DELIMITER ;
mysql> call HelloWorld();
+-------------+
| Hello World |
+-------------+
| Hello World |
+-------------+
1 row in set (0.00 sec)
+-----------------------------------+
| CONCAT( testvalue1 , testvalue2 ) |
+-----------------------------------+
| First Test !Second Test ! |
+-----------------------------------+
1 row in set (0.01 sec)
Query OK, 0 rows affected (0.02 sec)
展开全部
oracle的sql语句,存储过程,触发器,函数等可以在pl/sql中编辑,编译,调试;
oracle、sqlserver、mysql的存储过程语法大体一样,少许改动;
oracle、sqlserver、mysql的存储过程语法大体一样,少许改动;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
oracle的存储过程是使用pl/sql编程的,pl/sql还用于编写存储函数、触发器等
存储过程是平台相关的,也就是说不同数据库的存储过程语法是有区别的
存储过程是平台相关的,也就是说不同数据库的存储过程语法是有区别的
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询