How to add rows to a table based on the output of a stored procedure : Insert « Insert Delete Update « SQL Server / T-SQL Tutorial






The syntax for inserting data from a stored procedure is as follows:
INSERT
   [ INTO]
   table_or_view_name
   [ ( column_list ) ]
EXEC stored_procedure_name

12> CREATE TABLE employee(
13>    id          INTEGER,
14>    first_name  VARCHAR(10),
15>    last_name   VARCHAR(10),
16>    salary      DECIMAL(10,2),
17>    start_Date  DATETIME,
18>    region      VARCHAR(10),
19>    city        VARCHAR(20),
20>    managerid   INTEGER
21> );
22> GO
1> INSERT INTO employee VALUES (1, 'Jason' ,  'Martin', 5890,'2005-03-22','North','Vancouver',3);
2> GO

(1 rows affected)
1> INSERT INTO employee VALUES (2, 'Alison',  'Mathews',4789,'2003-07-21','South','Utown',4);
2> GO

(1 rows affected)
1> INSERT INTO employee VALUES (3, 'James' ,  'Smith',  6678,'2001-12-01','North','Paris',5);
2> GO

(1 rows affected)
1> INSERT INTO employee VALUES (4, 'Celia' ,  'Rice',   5567,'2006-03-03','South','London',6);
2> GO

(1 rows affected)
1> INSERT INTO employee VALUES (5, 'Robert',  'Black',  4467,'2004-07-02','East','Newton',7);
2> GO

(1 rows affected)
1> INSERT INTO employee VALUES (6, 'Linda' ,  'Green' , 6456,'2002-05-19','East','Calgary',8);
2> GO

(1 rows affected)
1> INSERT INTO employee VALUES (7, 'David' ,  'Larry',  5345,'2008-03-18','West','New York',9);
2> GO

(1 rows affected)
1> INSERT INTO employee VALUES (8, 'James' ,  'Cat',    4234,'2007-07-17','West','Regina',9);
2> GO

(1 rows affected)
1> INSERT INTO employee VALUES (9, 'Joan'  ,  'Act',    6123,'2001-04-16','North','Toronto',10);
2> GO

(1 rows affected)
1>
2> select * from employee;
3> GO
id          first_name last_name  salary       start_Date              region     city                 managerid
----------- ---------- ---------- ------------ ----------------------- ---------- -------------------- -----------
          1 Jason      Martin          5890.00 2005-03-22 00:00:00.000 North      Vancouver                      3
          2 Alison     Mathews         4789.00 2003-07-21 00:00:00.000 South      Utown                          4
          3 James      Smith           6678.00 2001-12-01 00:00:00.000 North      Paris                          5
          4 Celia      Rice            5567.00 2006-03-03 00:00:00.000 South      London                         6
          5 Robert     Black           4467.00 2004-07-02 00:00:00.000 East       Newton                         7
          6 Linda      Green           6456.00 2002-05-19 00:00:00.000 East       Calgary                        8
          7 David      Larry           5345.00 2008-03-18 00:00:00.000 West       New York                       9
          8 James      Cat             4234.00 2007-07-17 00:00:00.000 West       Regina                         9
          9 Joan       Act             6123.00 2001-04-16 00:00:00.000 North      Toronto                       10

(9 rows affected)
1>
2>
3>
4> CREATE PROCEDURE myProc
5> @StartDT datetime
6> AS
7> SELECT ID, first_name, last_name
8> FROM employee
9> WHERE start_Date > @StartDT
10> GO
1>
2> EXEC myProc '6/2/04'
3>
4> INSERT employee(ID, first_name, last_name)
5> EXEC myProc '6/2/04'
6>
7> select * from employee;
8> GO
ID          first_name last_name
----------- ---------- ----------
          1 Jason      Martin
          4 Celia      Rice
          5 Robert     Black
          7 David      Larry
          8 James      Cat

(5 rows affected)
id          first_name last_name  salary       start_Date              region     city                 managerid
----------- ---------- ---------- ------------ ----------------------- ---------- -------------------- -----------
          1 Jason      Martin          5890.00 2005-03-22 00:00:00.000 North      Vancouver                      3
          2 Alison     Mathews         4789.00 2003-07-21 00:00:00.000 South      Utown                          4
          3 James      Smith           6678.00 2001-12-01 00:00:00.000 North      Paris                          5
          4 Celia      Rice            5567.00 2006-03-03 00:00:00.000 South      London                         6
          5 Robert     Black           4467.00 2004-07-02 00:00:00.000 East       Newton                         7
          6 Linda      Green           6456.00 2002-05-19 00:00:00.000 East       Calgary                        8
          7 David      Larry           5345.00 2008-03-18 00:00:00.000 West       New York                       9
          8 James      Cat             4234.00 2007-07-17 00:00:00.000 West       Regina                         9
          9 Joan       Act             6123.00 2001-04-16 00:00:00.000 North      Toronto                       10
          1 Jason      Martin             NULL                    NULL NULL       NULL                        NULL
          4 Celia      Rice               NULL                    NULL NULL       NULL                        NULL
          5 Robert     Black              NULL                    NULL NULL       NULL                        NULL
          7 David      Larry              NULL                    NULL NULL       NULL                        NULL
          8 James      Cat                NULL                    NULL NULL       NULL                        NULL

(14 rows affected)
1>
2> drop procedure myProc;
3> drop table employee;
4> GO
1>
2>








2.1.Insert
2.1.1.The syntax of the INSERT statement for inserting a single row
2.1.2.INSERT Statement
2.1.3.Inserting Data for a Subset of Table Columns
2.1.4.The insertion of values into some (but not all) of a table's columns usually requires the explicit specification of the corresponding columns.
2.1.5.The order of column names in the VALUE clause of the INSERT statement can be different from the original order of those columns.
2.1.6.An INSERT statement that adds the new row using a column list
2.1.7.INSERT statement with a column list
2.1.8.INSERT...DEFAULT VALUES
2.1.9.Use declared variables in insert statement
2.1.10.An INSERT statement that fails because a related row doesn't exist
2.1.11.eliminate the optional column list and allow SQL Server to assume we're providing something for every column
2.1.12.How to add rows to a table based on the output of a stored procedure