Click here to Skip to main content
15,910,980 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi all.
I will create procedure by sql query and have @name_table (nvarchar).
How do one procedure using for multiple table not use "EXCE"
example:
SQL
CREATE TABLE tbl_produces
(
   id int primary key,
   name nvarchar(250),
)

GO
INSERT INTO tbl_produces VALUES (1,'abc'),(2,'cde'),(3,'hfd')

GO
CREATE PROCEDURE return_table
(
    @table_name nvarchar(250)
)
AS
  SELECT * FROM @table_name  
Return

GO
" EXCE return_table 'tbl_produces' " = " SELECT * FROM tbl_produces "

How do i can use that? Help me ! Thank for help
Posted

Try this:
SQL
CREATE PROCEDURE return_table
    @table_name nvarchar(250)
AS
BEGIN
    DECLARE @sql NVARCHAR(MAX)  

    SET @sql = N'SELECT * FROM ' + @table_name
    EXEC(@sql)
END
 
Share this answer
 
Comments
Lương Tuấn Anh 10-Jul-14 5:51am    
Thank Maciej Los.
But i don't like using this. what have a way can not use exec or sp_executesql. Do you have any other ideals
Can see if you use query
SQL
CREATE PROCEDURE return_table
(
   @table_name_ nvarchar(250)
)
AS
  DECLARE @sqlStr nvarchar(max) ,
          @ParmDefinition nvarchar(MAX) 
  Set @sqlStr = 'SELECT * FROM @table_name' 
  SET @ParmDefinition = N'@table_name nvarchar(250),
  EXECUTE sp_executesql @sqlStr,
                        @ParmDefinition,
                        @table_name = @table_name_
  RETURN
  GO

for multiple table when i want create 1 function
SQL
CREATE FUNCTION [dbo].[return] ( ) 
RETURNS  TABLE 
AS
RETURN
(
	select * from 
	( 
       SELECT 'EXEC return_table ''tblProduct_01''' AS sp_executesql
       UNION ALL 
	SELECT 'EXEC return_table ''tblProduct_02''' AS sp_executesql	 
) AS T
)
GO


I is fail
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900