Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Stored procedure with table name as parameter

I have a stored procedure, and I would like to assign the number of rows of that table to a variable and later use that variable.

I am calling the procedure like:

EXEC TEST.dbo.myProc nameOfTable

The procedure is something like:

CREATE PROCEDURE myProc @table_name varchar(1024) AS
BEGIN
    DECLARE  @Nval INT
    /*  SOME INSTRUCTIONS */

    SELECT   @Nval  = COUNT(*) FROM @table_name 
END 

When executing I am getting an error:

Msg 156, Level 15, State 1, Procedure nLQ, Line 57
Incorrect syntax near the keyword 'FROM'.

How would I assign the variable @Nval?

like image 621
edgarmtze Avatar asked Nov 29 '22 03:11

edgarmtze


1 Answers

You can't parameterise a table name like that, FROM @table_name. Only way is to execute dynamic TSQL.

Before you do that, read: The Curse and Blessings of Dynamic SQL

like image 106
Mitch Wheat Avatar answered Mar 17 '23 22:03

Mitch Wheat