Dear All
CREATE PROCEDURE test AS
declare @.tableName varchar(100)
set @.tableName='ABCD'
INSERT INTO @.tableName
(A, B, C, E, F,G,H)
 SELECT
 A, B, C, D,
 COUNT(*) AS G,
 CONVERT(varchar(10), RecDate, 121), Left(TransID, 2) AS J
 FROM
 dbo.EFG
 GROUP BY
 
ORDER BY
 XXXX
( error INSERT INTO @.tableName, Do not find @.tableName, must be declare.)
help thanks
William
 
It appears that you first create @.TableName as a scalar variable, and then you attempt to insert into it as though it were a table variable.
If that properly reflects your intentions, I suggest that you first declare @.TableName as a table variable, with the columns properly defined -then your insert should work.
|||You are trying to insert the values on the table which is given on the runtime. Typically it is a dynamic insert query.
Use the following query..
Code Snippet
CREATE PROCEDURE test AS
Declare @.tableName varchar(100)
Set @.tableName='ABCD'
Exec ('INSERT INTO ' + @.tableName + '(A, B, C, E, F,G,H)
SELECT
A, B, C, D,
COUNT(*) AS G,
CONVERT(varchar(10), RecDate, 121), Left(TransID, 2) AS J
FROM
dbo.EFG
GROUP BY XXXX
ORDER BY XXXX');
|||How to do?|||Thanks all|||
CREATE PROCEDURE test AS 
declare @.tableName varchar(100)
set @.tableName='ABCD'
INSERT INTO @.tableName
(A, B, C, E, F,G,H)
SELECT
A, B, C, D,
COUNT(*) AS G,
CONVERT(varchar(10), RecDate, 121), Left(TransID, 2) AS J
FROM
dbo.EFG
GROUP BY
ORDER BY
XXXX
NOTE: You MUST supply the correct datatypes below. This is a suggested format to DECLARE a table variable and then populate that table variable.
 
Code Snippet
CREATE PROCEDURE dbo.MyTestProcedure
AS
 BEGIN
 DECLARE @.MyTable table
 ( ColA datatype,
 ColB datatype,
 ColC datatype,
 ColD datatype,
 ColE datatype,
 ColF datatype,
 ColG datatype
 )
 INSERT INTO @.MyTable
 SELECT Col1,
 Col2,
 Col3,
 Col4,
 COUNT(*),
 CONVERT(varchar(10), RecDate, 121), 
 Left(TransID, 2)
 FROM dbo.EFG
 GROUP BY 
 ORDER BY
 SELECT *
 FROM @.MyTable
END
 
No comments:
Post a Comment