diff --git a/sql-queries-3/parameterizing-sql-in-clause/in-operator-example.sql b/sql-queries-3/parameterizing-sql-in-clause/in-operator-example.sql new file mode 100644 index 00000000..c41e2edd --- /dev/null +++ b/sql-queries-3/parameterizing-sql-in-clause/in-operator-example.sql @@ -0,0 +1,3 @@ +SELECT * +FROM Program +WHERE department_id IN (1, 2, 3); \ No newline at end of file diff --git a/sql-queries-3/parameterizing-sql-in-clause/mysql-find-in-set-example.sql b/sql-queries-3/parameterizing-sql-in-clause/mysql-find-in-set-example.sql new file mode 100644 index 00000000..cad02bde --- /dev/null +++ b/sql-queries-3/parameterizing-sql-in-clause/mysql-find-in-set-example.sql @@ -0,0 +1 @@ +SELECT * FROM Student WHERE FIND_IN_SET(id, '1001,1003,1007'); \ No newline at end of file diff --git a/sql-queries-3/parameterizing-sql-in-clause/mysql-prepared-statement-example.sql b/sql-queries-3/parameterizing-sql-in-clause/mysql-prepared-statement-example.sql new file mode 100644 index 00000000..5bf62e30 --- /dev/null +++ b/sql-queries-3/parameterizing-sql-in-clause/mysql-prepared-statement-example.sql @@ -0,0 +1,5 @@ +SET @StudentIds = '1001,1003,1007'; +SET @sql = CONCAT('SELECT * FROM Student WHERE id IN (', @StudentIds, ')'); +PREPARE stmt FROM @sql; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; diff --git a/sql-queries-3/parameterizing-sql-in-clause/postgres-function-example.sql b/sql-queries-3/parameterizing-sql-in-clause/postgres-function-example.sql new file mode 100644 index 00000000..8d74ef35 --- /dev/null +++ b/sql-queries-3/parameterizing-sql-in-clause/postgres-function-example.sql @@ -0,0 +1,11 @@ +CREATE OR REPLACE FUNCTION find_programs_by_departments(dept_ids int[]) +RETURNS TABLE(id int, name varchar, description varchar, start_date date, end_date date, type varchar, department_id int) AS $$ +BEGIN + RETURN QUERY + SELECT p.* + FROM Program p + WHERE p.department_id = ANY (dept_ids); +END; +$$ LANGUAGE plpgsql; + +SELECT * FROM find_programs_by_departments(ARRAY[1, 2, 3]); \ No newline at end of file diff --git a/sql-queries-3/parameterizing-sql-in-clause/postgres-prepared-statement-example.sql b/sql-queries-3/parameterizing-sql-in-clause/postgres-prepared-statement-example.sql new file mode 100644 index 00000000..ff91c3b4 --- /dev/null +++ b/sql-queries-3/parameterizing-sql-in-clause/postgres-prepared-statement-example.sql @@ -0,0 +1,4 @@ +PREPARE find_programs_by_departments (int[]) AS +SELECT * +FROM Program +WHERE department_id = ANY ($1); \ No newline at end of file diff --git a/sql-queries-3/parameterizing-sql-in-clause/postgres-string-to-array-example.sql b/sql-queries-3/parameterizing-sql-in-clause/postgres-string-to-array-example.sql new file mode 100644 index 00000000..f8a88210 --- /dev/null +++ b/sql-queries-3/parameterizing-sql-in-clause/postgres-string-to-array-example.sql @@ -0,0 +1,3 @@ +SELECT * +FROM Program +WHERE department_id = ANY (string_to_array('1,2,3', ',')::int[]); \ No newline at end of file diff --git a/sql-queries-3/parameterizing-sql-in-clause/sql-server-string-split-example.sql b/sql-queries-3/parameterizing-sql-in-clause/sql-server-string-split-example.sql new file mode 100644 index 00000000..b9f7189c --- /dev/null +++ b/sql-queries-3/parameterizing-sql-in-clause/sql-server-string-split-example.sql @@ -0,0 +1,10 @@ +CREATE PROCEDURE find_students_by_ids + @StudentIds VARCHAR(MAX) +AS +BEGIN + SELECT * + FROM Student + WHERE id IN (SELECT value FROM STRING_SPLIT(@StudentIds, ',')) +END; + +EXEC find_students_by_ids '1001,1003,1007'; diff --git a/sql-queries-3/parameterizing-sql-in-clause/sql-server-user-defined-table-type-example.sql b/sql-queries-3/parameterizing-sql-in-clause/sql-server-user-defined-table-type-example.sql new file mode 100644 index 00000000..4870b188 --- /dev/null +++ b/sql-queries-3/parameterizing-sql-in-clause/sql-server-user-defined-table-type-example.sql @@ -0,0 +1,18 @@ +CREATE TYPE StudentIDTableType AS TABLE +( + StudentID INT +); + +CREATE PROCEDURE find_students_by_ids + @StudentIDs StudentIDTableType READONLY +AS +BEGIN + SELECT * + FROM Student + WHERE id IN (SELECT StudentID FROM @StudentIDs) +END; + +DECLARE @StudentIDs StudentIDTableType +INSERT INTO @StudentIDs (StudentID) VALUES (1), (2), (3) + +EXEC find_students_by_ids @StudentIDs diff --git a/sql-queries-3/parameterizing-sql-in-clause/sql-sever-dynamic-example.sql b/sql-queries-3/parameterizing-sql-in-clause/sql-sever-dynamic-example.sql new file mode 100644 index 00000000..f4050d73 --- /dev/null +++ b/sql-queries-3/parameterizing-sql-in-clause/sql-sever-dynamic-example.sql @@ -0,0 +1,10 @@ +CREATE PROCEDURE find_students_by_ids + @StudentIds VARCHAR(MAX) +AS +BEGIN + DECLARE @SQL NVARCHAR(MAX) + SET @SQL = 'SELECT * FROM Student WHERE id IN (' + @StudentIds + ')' + EXEC sp_executesql @SQL +END; + +EXEC find_students_by_ids '1001,1003,1007';