Procedural Extensions Security
On this page
Application-Based User Security in Stored Procedures
Within stored procedures, you can handle scenarios where your application’s users are given access to data based on an access level.
For example, consider a reporting application for an educational institution.1
,2
or 3
.get_
procedure, which is shown below.
SET sql_mode = 'PIPES_AS_CONCAT';DROP DATABASE IF EXISTS singlestore_docs_example;CREATE DATABASE singlestore_docs_example;use singlestore_docs_example;CREATE TABLE student(first_name TEXT, last_name TEXT, address TEXT, gpa FLOAT);INSERT INTO student VALUES ('John', 'Smith', '10 Anywhere St', 3.5),('Sally', 'Smith', '20 Anywhere Lane', 4.0), ('Ann', 'Brown', '30 Anywhere Dr', 3.8);DELIMITER //CREATE PROCEDURE get_student_info(user_access_level INT, last_name TEXT) ASDECLAREcols_to_return TEXT;BEGINIF user_access_level = 1 THENcols_to_return = 'last_name, first_name';ELSIF user_access_level = 2 THENcols_to_return = 'last_name, first_name, address';ELSIF user_access_level = 3 THENcols_to_return = 'last_name, first_name, address, gpa';END IF;EXECUTE IMMEDIATE 'ECHO SELECT ' || cols_to_return ||' FROM student WHERE last_name = ' || QUOTE(last_name) ||' ORDER BY last_name';END//DELIMITER ;
Call get_
with access level 1
:
CALL get_student_info(1, 'Smith');
+-----------+------------+
| last_name | first_name |
+-----------+------------+
| Smith | John |
| Smith | Sally |
+-----------+------------+
Call get_
with access level 2
:
CALL get_student_info(2, 'Smith');
+-----------+------------+------------------+
| last_name | first_name | address |
+-----------+------------+------------------+
| Smith | John | 10 Anywhere St |
| Smith | Sally | 20 Anywhere Lane |
+-----------+------------+------------------+
Call get_
with access level 3
:
CALL get_student_info(3, 'Smith');
+-----------+------------+------------------+------+
| last_name | first_name | address | gpa |
+-----------+------------+------------------+------+
| Smith | John | 10 Anywhere St | 3.5 |
| Smith | Sally | 20 Anywhere Lane | 4 |
+-----------+------------+------------------+------+
In this section
Last modified: November 29, 2022