1

SQL クエリでプロシージャを作成し、@name_table( nvarchar) を持ちます。

複数のテーブルを使用しないで使用する1つの手順はどのように使用されますEXECか?

例:

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

EXEC return_table 'tbl_produces' " = " SELECT * FROM tbl_produces

"

どうやってやるの?助けて!手伝ってくれてありがとう

使いたくない

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

EXECUTE を使用しないでテーブルを返すことができます


クエリを使用しているかどうかを確認できます

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

1つの関数を作成したい場合の複数のテーブルの場合

CREATE FUNCTION [dbo].[DanhSachNhaCungCap] ( ) -- Thong Tin Nha Cung Cap
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

→失敗です

4

2 に答える 2

2

これを試して:

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
  DECLARE @V_Query NVARCHAR(MAX);
  SET @V_Query = 'SELECT * FROM ' + @table_name;

  EXEC sp_executesql @V_Query
  GO

EXEC return_table 'tbl_produces' 
于 2014-07-10T09:41:22.937 に答える
1

試しましたsp_executesqlか?

sp_executesql 'select * from ' + @tableName

ドキュメントはこちら

于 2014-07-10T09:41:36.953 に答える