490 lines
14 KiB
Plaintext
490 lines
14 KiB
Plaintext
TRUNCATE TABLE performance_schema.events_statements_summary_by_program;
|
|
TRUNCATE TABLE performance_schema.events_statements_history_long;
|
|
################################################
|
|
# Quering PS statement summary and history_long#
|
|
################################################
|
|
# SET-UP
|
|
CREATE DATABASE stored_programs;
|
|
USE stored_programs;
|
|
CREATE TABLE t1(
|
|
i INT NOT NULL,
|
|
j INT
|
|
);
|
|
CREATE TABLE t2(
|
|
name CHAR(16) NOT NULL DEFAULT '',
|
|
id INT NOT NULL
|
|
);
|
|
CREATE TABLE t3(
|
|
d DATE,
|
|
n INT,
|
|
f DOUBLE,
|
|
s VARCHAR(32)
|
|
);
|
|
CREATE TABLE t4(
|
|
`k` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
|
`word` varchar(100) NOT NULL,
|
|
`mean` varchar(300) NOT NULL,
|
|
PRIMARY KEY (`k`)
|
|
);
|
|
Warnings:
|
|
Warning 1681 Integer display width is deprecated and will be removed in a future release.
|
|
############################
|
|
# Creating Stored Programs #
|
|
############################
|
|
# Stored Routine ( Procedure & Function )
|
|
CREATE PROCEDURE SampleProc1(x1 INT, x2 INT, y INT)
|
|
BEGIN
|
|
INSERT INTO t1 VALUES (x1, y);
|
|
INSERT INTO t1 VALUES (x2, y);
|
|
END|
|
|
CREATE PROCEDURE SampleProc2(x CHAR(16), y INT)
|
|
BEGIN
|
|
DECLARE z1, z2 INT;
|
|
SET z1 = y;
|
|
SET z2 = z1+2;
|
|
INSERT INTO t2 VALUES (x, z2);
|
|
END|
|
|
CREATE PROCEDURE SampleProc3()
|
|
BEGIN
|
|
DECLARE ld DATE;
|
|
DECLARE li INT;
|
|
DECLARE lf DOUBLE;
|
|
DECLARE ls VARCHAR(32);
|
|
SET ld = NULL, li = NULL, lf = NULL, ls = NULL;
|
|
INSERT INTO t3 VALUES (ld, li, lf, ls);
|
|
INSERT INTO t3 (n, f, s) VALUES ((ld IS NULL), 1, "ld is null"),
|
|
((li IS NULL), 1, "li is null"),
|
|
((li = 0), NULL, "li = 0"),
|
|
((lf IS NULL), 1, "lf is null"),
|
|
((lf = 0), NULL, "lf = 0"),
|
|
((ls IS NULL), 1, "ls is null");
|
|
END|
|
|
CREATE PROCEDURE SampleProc4()
|
|
BEGIN
|
|
DECLARE x INT;
|
|
SET x = 1;
|
|
WHILE x <= 2 DO
|
|
INSERT INTO t4(word, mean) VALUES('a','a mean');
|
|
SET x = x + 1;
|
|
END WHILE;
|
|
END|
|
|
CREATE FUNCTION append(s1 CHAR(8), s2 CHAR(8)) RETURNS CHAR(16)
|
|
RETURN concat(s1, s2)|
|
|
CREATE FUNCTION wt_avg(n1 INT, n2 INT, n3 INT, n4 INT)
|
|
RETURNS INT
|
|
DETERMINISTIC
|
|
BEGIN
|
|
DECLARE avg INT;
|
|
SET avg = (n1+n2+n3*2+n4*4)/8;
|
|
RETURN avg;
|
|
END|
|
|
CREATE FUNCTION fac(n INT UNSIGNED) RETURNS BIGINT UNSIGNED
|
|
BEGIN
|
|
DECLARE f BIGINT UNSIGNED DEFAULT 1;
|
|
WHILE n > 1 DO
|
|
SET f = f * n;
|
|
SET n = n - 1;
|
|
END WHILE;
|
|
RETURN f;
|
|
END|
|
|
# Triggers
|
|
CREATE TRIGGER trg1 BEFORE INSERT ON t1 FOR EACH ROW
|
|
BEGIN
|
|
if isnull(new.j) then
|
|
SET new.j:= new.i * 10;
|
|
END if;
|
|
END|
|
|
CREATE TRIGGER trg2 AFTER INSERT ON t2 FOR EACH ROW
|
|
BEGIN
|
|
UPDATE t1 SET i=new.id+i ;
|
|
END|
|
|
CREATE TRIGGER trg3 AFTER UPDATE ON t2 FOR EACH ROW
|
|
SET @change:= @change + new.id - old.id|
|
|
CREATE TRIGGER trg4 BEFORE DELETE ON t1 FOR EACH ROW
|
|
SET @del:= @del + 1|
|
|
CREATE TRIGGER trg5 AFTER DELETE ON t1 FOR EACH ROW
|
|
SET @del:= @del + 8 + old.j|
|
|
#####################
|
|
# Executing queries #
|
|
#####################
|
|
INSERT INTO t1 VALUES (10,20);
|
|
CALL SampleProc1(30,40,50);
|
|
SET @a=1;
|
|
SELECT @a;
|
|
@a
|
|
1
|
|
CALL SampleProc2("Jwalamukhi",34);
|
|
SELECT @a;
|
|
@a
|
|
1
|
|
CALL SampleProc3();
|
|
CALL SampleProc4();
|
|
SET @change=1;
|
|
SELECT @change;
|
|
@change
|
|
1
|
|
UPDATE t2 SET id=22 WHERE name="Jwalamukhi";
|
|
SELECT @change;
|
|
@change
|
|
-13
|
|
SET @del=1;
|
|
SELECT @del;
|
|
@del
|
|
1
|
|
DELETE FROM t1 WHERE i=76;
|
|
SELECT @del;
|
|
@del
|
|
60
|
|
SELECT wt_avg(1, 12, 1990, 1121990);
|
|
wt_avg(1, 12, 1990, 1121990)
|
|
561494
|
|
SELECT fac(5);
|
|
fac(5)
|
|
120
|
|
SELECT append("Bolly", "wood");
|
|
append("Bolly", "wood")
|
|
Bollywood
|
|
TRUNCATE TABLE performance_schema.events_statements_history_long;
|
|
# Event
|
|
SELECT COUNT(*) = 1 FROM information_schema.processlist
|
|
WHERE user = 'event_scheduler' AND command = 'Daemon';
|
|
COUNT(*) = 1
|
|
1
|
|
CREATE TABLE table_t(a INT);
|
|
CREATE EVENT e1 ON SCHEDULE EVERY 2 SECOND DO
|
|
BEGIN
|
|
INSERT INTO table_t VALUES(1);
|
|
END|
|
|
SELECT * FROM table_t;
|
|
a
|
|
1
|
|
SET GLOBAL event_scheduler=OFF;
|
|
SELECT OBJECT_TYPE, OBJECT_SCHEMA, OBJECT_NAME, COUNT_STAR, COUNT_STATEMENTS
|
|
FROM performance_schema.events_statements_summary_by_program
|
|
WHERE OBJECT_SCHEMA='stored_programs' ORDER BY OBJECT_NAME;
|
|
OBJECT_TYPE OBJECT_SCHEMA OBJECT_NAME COUNT_STAR COUNT_STATEMENTS
|
|
FUNCTION stored_programs append 1 1
|
|
EVENT stored_programs e1 1 1
|
|
FUNCTION stored_programs fac 1 19
|
|
PROCEDURE stored_programs sampleproc1 1 2
|
|
PROCEDURE stored_programs sampleproc2 1 5
|
|
PROCEDURE stored_programs sampleproc3 1 10
|
|
PROCEDURE stored_programs sampleproc4 1 11
|
|
TRIGGER stored_programs trg1 3 3
|
|
TRIGGER stored_programs trg2 1 1
|
|
TRIGGER stored_programs trg3 1 1
|
|
TRIGGER stored_programs trg4 1 1
|
|
TRIGGER stored_programs trg5 1 1
|
|
FUNCTION stored_programs wt_avg 1 3
|
|
SELECT EVENT_NAME, SQL_TEXT, CURRENT_SCHEMA, OBJECT_TYPE, OBJECT_SCHEMA,
|
|
OBJECT_NAME, NESTING_EVENT_TYPE, NESTING_EVENT_LEVEL FROM
|
|
performance_schema.events_statements_history_long WHERE
|
|
CURRENT_SCHEMA='stored_programs' AND
|
|
(SQL_TEXT not like '%count(*) = 1%' OR SQL_TEXT IS NULL)
|
|
ORDER BY OBJECT_NAME, NESTING_EVENT_LEVEL, SQL_TEXT, EVENT_NAME;
|
|
EVENT_NAME SQL_TEXT CURRENT_SCHEMA OBJECT_TYPE OBJECT_SCHEMA OBJECT_NAME NESTING_EVENT_TYPE NESTING_EVENT_LEVEL
|
|
statement/scheduler/event NULL stored_programs NULL NULL NULL NULL 0
|
|
statement/sql/create_event CREATE EVENT e1 ON SCHEDULE EVERY 2 SECOND DO
|
|
BEGIN
|
|
INSERT INTO table_t VALUES(1);
|
|
END stored_programs NULL NULL NULL NULL 0
|
|
statement/sql/create_table CREATE TABLE table_t(a INT) stored_programs NULL NULL NULL NULL 0
|
|
statement/sql/select SELECT * FROM table_t stored_programs NULL NULL NULL NULL 0
|
|
statement/sql/select SELECT 5 * 10 stored_programs NULL NULL NULL NULL 0
|
|
statement/sql/select SELECT COUNT(*) = 0 FROM information_schema.processlist
|
|
WHERE user = 'event_scheduler' stored_programs NULL NULL NULL NULL 0
|
|
statement/sql/select SELECT OBJECT_TYPE, OBJECT_SCHEMA, OBJECT_NAME, COUNT_STAR, COUNT_STATEMENTS
|
|
FROM performance_schema.events_statements_summary_by_program
|
|
WHERE OBJECT_SCHEMA='stored_programs' ORDER BY OBJECT_NAME stored_programs NULL NULL NULL NULL 0
|
|
statement/sql/set_option SET GLOBAL event_scheduler=OFF stored_programs NULL NULL NULL NULL 0
|
|
statement/sql/truncate TRUNCATE TABLE performance_schema.events_statements_history_long stored_programs NULL NULL NULL NULL 0
|
|
statement/sp/stmt INSERT INTO table_t VALUES(1) stored_programs EVENT stored_programs e1 STATEMENT 1
|
|
# clean -up
|
|
TRUNCATE TABLE performance_schema.events_statements_summary_by_program;
|
|
TRUNCATE TABLE performance_schema.events_statements_history_long;
|
|
SELECT OBJECT_TYPE, OBJECT_SCHEMA, OBJECT_NAME, COUNT_STAR, COUNT_STATEMENTS
|
|
FROM performance_schema.events_statements_summary_by_program
|
|
WHERE OBJECT_SCHEMA='stored_programs' ORDER BY OBJECT_NAME;
|
|
OBJECT_TYPE OBJECT_SCHEMA OBJECT_NAME COUNT_STAR COUNT_STATEMENTS
|
|
FUNCTION stored_programs append 0 0
|
|
EVENT stored_programs e1 0 0
|
|
FUNCTION stored_programs fac 0 0
|
|
PROCEDURE stored_programs sampleproc1 0 0
|
|
PROCEDURE stored_programs sampleproc2 0 0
|
|
PROCEDURE stored_programs sampleproc3 0 0
|
|
PROCEDURE stored_programs sampleproc4 0 0
|
|
TRIGGER stored_programs trg1 0 0
|
|
TRIGGER stored_programs trg2 0 0
|
|
TRIGGER stored_programs trg3 0 0
|
|
TRIGGER stored_programs trg4 0 0
|
|
TRIGGER stored_programs trg5 0 0
|
|
FUNCTION stored_programs wt_avg 0 0
|
|
DROP PROCEDURE SampleProc1;
|
|
DROP PROCEDURE SampleProc2;
|
|
DROP PROCEDURE SampleProc3;
|
|
DROP PROCEDURE SampleProc4;
|
|
DROP FUNCTION wt_avg;
|
|
DROP FUNCTION fac;
|
|
DROP FUNCTION append;
|
|
DROP TRIGGER trg1;
|
|
DROP TRIGGER trg2;
|
|
DROP TRIGGER trg3;
|
|
DROP TRIGGER trg4;
|
|
DROP TRIGGER trg5;
|
|
DROP EVENT IF EXISTS e1;
|
|
DROP TABLE t1;
|
|
DROP TABLE t2;
|
|
DROP TABLE t3;
|
|
DROP TABLE t4;
|
|
DROP TABLE table_t;
|
|
DROP DATABASE stored_programs;
|
|
SET GLOBAL event_scheduler=ON;
|
|
SELECT OBJECT_TYPE, OBJECT_SCHEMA, OBJECT_NAME, COUNT_STAR, COUNT_STATEMENTS
|
|
FROM performance_schema.events_statements_summary_by_program
|
|
WHERE OBJECT_SCHEMA='stored_programs' ORDER BY OBJECT_NAME;
|
|
OBJECT_TYPE OBJECT_SCHEMA OBJECT_NAME COUNT_STAR COUNT_STATEMENTS
|
|
# SET-UP
|
|
CREATE DATABASE stored_programs;
|
|
USE stored_programs;
|
|
CREATE TABLE t1(
|
|
i INT NOT NULL,
|
|
j INT
|
|
);
|
|
CREATE TABLE t2(
|
|
name CHAR(16) NOT NULL DEFAULT '',
|
|
id INT NOT NULL
|
|
);
|
|
CREATE TABLE t3(
|
|
d DATE,
|
|
n INT,
|
|
f DOUBLE,
|
|
s VARCHAR(32)
|
|
);
|
|
CREATE TABLE t4(
|
|
`k` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
|
`word` varchar(100) NOT NULL,
|
|
`mean` varchar(300) NOT NULL,
|
|
PRIMARY KEY (`k`)
|
|
);
|
|
Warnings:
|
|
Warning 1681 Integer display width is deprecated and will be removed in a future release.
|
|
############################
|
|
# Creating Stored Programs #
|
|
############################
|
|
# Stored Routine ( Procedure & Function )
|
|
CREATE PROCEDURE SampleProc1(x1 INT, x2 INT, y INT)
|
|
BEGIN
|
|
INSERT INTO t1 VALUES (x1, y);
|
|
INSERT INTO t1 VALUES (x2, y);
|
|
END|
|
|
CREATE PROCEDURE SampleProc2(x CHAR(16), y INT)
|
|
BEGIN
|
|
DECLARE z1, z2 INT;
|
|
SET z1 = y;
|
|
SET z2 = z1+2;
|
|
INSERT INTO t2 VALUES (x, z2);
|
|
END|
|
|
CREATE PROCEDURE SampleProc3()
|
|
BEGIN
|
|
DECLARE ld DATE;
|
|
DECLARE li INT;
|
|
DECLARE lf DOUBLE;
|
|
DECLARE ls VARCHAR(32);
|
|
SET ld = NULL, li = NULL, lf = NULL, ls = NULL;
|
|
INSERT INTO t3 VALUES (ld, li, lf, ls);
|
|
INSERT INTO t3 (n, f, s) VALUES ((ld IS NULL), 1, "ld is null"),
|
|
((li IS NULL), 1, "li is null"),
|
|
((li = 0), NULL, "li = 0"),
|
|
((lf IS NULL), 1, "lf is null"),
|
|
((lf = 0), NULL, "lf = 0"),
|
|
((ls IS NULL), 1, "ls is null");
|
|
END|
|
|
CREATE PROCEDURE SampleProc4()
|
|
BEGIN
|
|
DECLARE x INT;
|
|
SET x = 1;
|
|
WHILE x <= 2 DO
|
|
INSERT INTO t4(word, mean) VALUES('a','a mean');
|
|
SET x = x + 1;
|
|
END WHILE;
|
|
END|
|
|
CREATE FUNCTION append(s1 CHAR(8), s2 CHAR(8)) RETURNS CHAR(16)
|
|
RETURN concat(s1, s2)|
|
|
CREATE FUNCTION wt_avg(n1 INT, n2 INT, n3 INT, n4 INT)
|
|
RETURNS INT
|
|
DETERMINISTIC
|
|
BEGIN
|
|
DECLARE avg INT;
|
|
SET avg = (n1+n2+n3*2+n4*4)/8;
|
|
RETURN avg;
|
|
END|
|
|
CREATE FUNCTION fac(n INT UNSIGNED) RETURNS BIGINT UNSIGNED
|
|
BEGIN
|
|
DECLARE f BIGINT UNSIGNED DEFAULT 1;
|
|
WHILE n > 1 DO
|
|
SET f = f * n;
|
|
SET n = n - 1;
|
|
END WHILE;
|
|
RETURN f;
|
|
END|
|
|
# Triggers
|
|
CREATE TRIGGER trg1 BEFORE INSERT ON t1 FOR EACH ROW
|
|
BEGIN
|
|
if isnull(new.j) then
|
|
SET new.j:= new.i * 10;
|
|
END if;
|
|
END|
|
|
CREATE TRIGGER trg2 AFTER INSERT ON t2 FOR EACH ROW
|
|
BEGIN
|
|
UPDATE t1 SET i=new.id+i ;
|
|
END|
|
|
CREATE TRIGGER trg3 AFTER UPDATE ON t2 FOR EACH ROW
|
|
SET @change:= @change + new.id - old.id|
|
|
CREATE TRIGGER trg4 BEFORE DELETE ON t1 FOR EACH ROW
|
|
SET @del:= @del + 1|
|
|
CREATE TRIGGER trg5 AFTER DELETE ON t1 FOR EACH ROW
|
|
SET @del:= @del + 8 + old.j|
|
|
update performance_schema.setup_instruments set enabled='YES', timed='NO'
|
|
where name like "statement/sp/%" order by name;
|
|
TRUNCATE TABLE performance_schema.events_statements_summary_by_program;
|
|
TRUNCATE TABLE performance_schema.events_statements_history_long;
|
|
#####################
|
|
# Executing queries #
|
|
#####################
|
|
INSERT INTO t1 VALUES (10,20);
|
|
CALL SampleProc1(30,40,50);
|
|
SET @a=1;
|
|
SELECT @a;
|
|
@a
|
|
1
|
|
CALL SampleProc2("Jwalamukhi",34);
|
|
SELECT @a;
|
|
@a
|
|
1
|
|
CALL SampleProc3();
|
|
CALL SampleProc4();
|
|
SET @change=1;
|
|
SELECT @change;
|
|
@change
|
|
1
|
|
UPDATE t2 SET id=22 WHERE name="Jwalamukhi";
|
|
SELECT @change;
|
|
@change
|
|
-13
|
|
SET @del=1;
|
|
SELECT @del;
|
|
@del
|
|
1
|
|
DELETE FROM t1 WHERE i=76;
|
|
SELECT @del;
|
|
@del
|
|
60
|
|
SELECT wt_avg(1, 12, 1990, 1121990);
|
|
wt_avg(1, 12, 1990, 1121990)
|
|
561494
|
|
SELECT fac(5);
|
|
fac(5)
|
|
120
|
|
SELECT append("Bolly", "wood");
|
|
append("Bolly", "wood")
|
|
Bollywood
|
|
TRUNCATE TABLE performance_schema.events_statements_history_long;
|
|
# Event
|
|
SELECT COUNT(*) = 1 FROM information_schema.processlist
|
|
WHERE user = 'event_scheduler' AND command = 'Daemon';
|
|
COUNT(*) = 1
|
|
1
|
|
CREATE TABLE table_t(a INT);
|
|
CREATE EVENT e1 ON SCHEDULE EVERY 2 SECOND DO
|
|
BEGIN
|
|
INSERT INTO table_t VALUES(1);
|
|
END|
|
|
SELECT * FROM table_t;
|
|
a
|
|
1
|
|
SET GLOBAL event_scheduler=OFF;
|
|
SELECT EVENT_NAME, TIMER_START, TIMER_END, TIMER_WAIT FROM
|
|
performance_schema.events_statements_history_long WHERE
|
|
CURRENT_SCHEMA='stored_programs' AND EVENT_NAME like "statement/sp/%";
|
|
EVENT_NAME TIMER_START TIMER_END TIMER_WAIT
|
|
statement/sp/stmt NULL NULL NULL
|
|
update performance_schema.setup_instruments set enabled='YES', timed='YES'
|
|
where name like "statement/sp/%" order by name;
|
|
TRUNCATE TABLE performance_schema.events_statements_summary_by_program;
|
|
TRUNCATE TABLE performance_schema.events_statements_history_long;
|
|
DROP PROCEDURE SampleProc1;
|
|
DROP PROCEDURE SampleProc2;
|
|
DROP PROCEDURE SampleProc3;
|
|
DROP PROCEDURE SampleProc4;
|
|
DROP FUNCTION wt_avg;
|
|
DROP FUNCTION fac;
|
|
DROP FUNCTION append;
|
|
DROP TRIGGER trg1;
|
|
DROP TRIGGER trg2;
|
|
DROP TRIGGER trg3;
|
|
DROP TRIGGER trg4;
|
|
DROP TRIGGER trg5;
|
|
DROP EVENT IF EXISTS e1;
|
|
DROP TABLE t1;
|
|
DROP TABLE t2;
|
|
DROP TABLE t3;
|
|
DROP TABLE t4;
|
|
DROP TABLE table_t;
|
|
DROP DATABASE stored_programs;
|
|
SET GLOBAL event_scheduler=ON;
|
|
# set-up
|
|
CREATE DATABASE sp;
|
|
USE sp;
|
|
CREATE TABLE t1(
|
|
a INT,
|
|
b INT
|
|
);
|
|
# let the creation of the following stored programs fail
|
|
CREATE PROCEDURE fail1(IN a INT OUT x CHAR(16))
|
|
SET a=1;
|
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OUT x CHAR(16))
|
|
SET a=1' at line 1
|
|
CREATE FUNCTION fail2(a INT , b INT) RETURNS INT
|
|
x=SELECT COUNT(*) FROM t;
|
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '=SELECT COUNT(*) FROM t' at line 2
|
|
CREATE EVENT fail3 SCHEDULE EVERY MICROSECOND DO
|
|
DROP TABLE t;
|
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SCHEDULE EVERY MICROSECOND DO
|
|
DROP TABLE t' at line 1
|
|
# the below query on PS table doesn't show any rows
|
|
# as the creation of stored programs failed
|
|
SELECT OBJECT_TYPE, OBJECT_SCHEMA, OBJECT_NAME, COUNT_STAR, COUNT_STATEMENTS
|
|
FROM performance_schema.events_statements_summary_by_program
|
|
WHERE OBJECT_SCHEMA='sp';
|
|
OBJECT_TYPE OBJECT_SCHEMA OBJECT_NAME COUNT_STAR COUNT_STATEMENTS
|
|
# create few stored programs
|
|
CREATE PROCEDURE p(x1 INT, x2 INT)
|
|
BEGIN
|
|
INSERT INTO t1 VALUES (x1, x2);
|
|
END|
|
|
CREATE FUNCTION f(y1 INT, y2 INT) RETURNS INT
|
|
RETURN y1+y2;
|
|
CREATE TRIGGER trg AFTER INSERT ON t1 FOR EACH ROW
|
|
SET @neg=-1;
|
|
# execute the created stored programs such that they fail.
|
|
CALL p(7);
|
|
ERROR 42000: Incorrect number of arguments for PROCEDURE sp.p; expected 2, got 1
|
|
SELECT f("add",1,3);
|
|
ERROR 42000: Incorrect number of arguments for FUNCTION sp.f; expected 2, got 3
|
|
INSERT INTO t1;
|
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
|
|
# the below query on PS table doesn't expose any statistics as
|
|
# execution of the created stored porgrams failed.
|
|
SELECT OBJECT_TYPE, OBJECT_SCHEMA, OBJECT_NAME, COUNT_STAR, COUNT_STATEMENTS
|
|
FROM performance_schema.events_statements_summary_by_program
|
|
WHERE OBJECT_SCHEMA='sp';
|
|
OBJECT_TYPE OBJECT_SCHEMA OBJECT_NAME COUNT_STAR COUNT_STATEMENTS
|
|
PROCEDURE sp p 0 0
|
|
FUNCTION sp f 0 0
|
|
#clean-up
|
|
DROP PROCEDURE p;
|
|
DROP FUNCTION f;
|
|
DROP TRIGGER trg;
|
|
DROP TABLE t1;
|
|
DROP DATABASE sp;
|