具体是这样的:
已存在这个表:CREATE TABLE temp_table (
num_col NUMBER,
char_col VARCHAR2(60)
);
的情况下,执行如下代码:
REM AnonymousBlock.sql
REM Chapter 3, Oracle9i PL/SQL Programming by Scott Urman
REM This is an example of an anonymous block.DECLARE
/* Declare variables to be used in this block. */
v_Num1 NUMBER := 1;
v_Num2 NUMBER := 2;
v_String1 VARCHAR2(50) := 'Hello World!';
v_String2 VARCHAR2(50) :=
'-- This message brought to you by PL/SQL!';
v_OutputStr VARCHAR2(50);
BEGIN
/* First, insert two rows into temp_table, using the values
of the variables. */
INSERT INTO temp_table (num_col, char_col)
VALUES (v_Num1, v_String1);
INSERT INTO temp_table (num_col, char_col)
VALUES (v_Num2, v_String2);
/* Now query temp_table for the two rows we just inserted, and
output them to the screen using the DBMS_OUTPUT package. */
SELECT char_col
INTO v_OutputStr
FROM temp_table
WHERE num_col = v_Num1;
DBMS_OUTPUT.PUT_LINE(v_OutputStr);
SELECT char_col
INTO v_OutputStr
FROM temp_table
WHERE num_col = v_Num2;
DBMS_OUTPUT.PUT_LINE(v_OutputStr);
/* Rollback our changes */
ROLLBACK;
END;
本应该输出结果:
Hello World!
-- This message brought to you by PL/SQL!
但为什么没有这样的结果:书上的例子估计用的系统是oracle 9i版本的,难道我的oracle 8.1.7版就不行吗?请各位高手赐教:是什么原因?
已存在这个表:CREATE TABLE temp_table (
num_col NUMBER,
char_col VARCHAR2(60)
);
的情况下,执行如下代码:
REM AnonymousBlock.sql
REM Chapter 3, Oracle9i PL/SQL Programming by Scott Urman
REM This is an example of an anonymous block.DECLARE
/* Declare variables to be used in this block. */
v_Num1 NUMBER := 1;
v_Num2 NUMBER := 2;
v_String1 VARCHAR2(50) := 'Hello World!';
v_String2 VARCHAR2(50) :=
'-- This message brought to you by PL/SQL!';
v_OutputStr VARCHAR2(50);
BEGIN
/* First, insert two rows into temp_table, using the values
of the variables. */
INSERT INTO temp_table (num_col, char_col)
VALUES (v_Num1, v_String1);
INSERT INTO temp_table (num_col, char_col)
VALUES (v_Num2, v_String2);
/* Now query temp_table for the two rows we just inserted, and
output them to the screen using the DBMS_OUTPUT package. */
SELECT char_col
INTO v_OutputStr
FROM temp_table
WHERE num_col = v_Num1;
DBMS_OUTPUT.PUT_LINE(v_OutputStr);
SELECT char_col
INTO v_OutputStr
FROM temp_table
WHERE num_col = v_Num2;
DBMS_OUTPUT.PUT_LINE(v_OutputStr);
/* Rollback our changes */
ROLLBACK;
END;
本应该输出结果:
Hello World!
-- This message brought to you by PL/SQL!
但为什么没有这样的结果:书上的例子估计用的系统是oracle 9i版本的,难道我的oracle 8.1.7版就不行吗?请各位高手赐教:是什么原因?
sql>set serveroutput on
show serveroutput;
可查看