存储过程 - 查询后插入

3
我是一个新手,正在学习编写存储过程。基本上,我只想将表1的前10条记录转移至我创建的表2。但是我的代码无法插入我从表1中选择的记录。我不确定是否缺少了什么或者我的操作有误。请帮忙看看。谢谢!

注:

1.表1和表2具有相同的数据类型。

2.我需要每个列的参数,以便我能够在我的C#.net图表中调用它们。

以下是我的存储过程:

**

USE [GDW]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_BI_Get_AsiaTopTen]

AS BEGIN
  DECLARE 
  @fyname nvarchar(120),
  @fmonth nvarchar(120),
  @fmonth_num int = null,
  @world_area nvarchar(120) = null

    SELECT TOP 10 
  @fyname= [FYName], 
  @fmonth= [FMONTH], 
  @fmonth_num= [FMONTH_NUM],
  @world_area= [World_AREA]
  FROM [dbo].[tbl_BI_FastReport1_Temp]
  WHERE [World_AREA] = 'Asia'
  AND [FMONTH_NUM] = '201401'

  INSERT INTO [dbo].[tbl_BI_AsiaTopTen]
  (
  [FYName],
  [FMONTH],
  [FMONTH_NUM],
  [World_AREA]
  )
  VALUES
  (
  @fyname,
  @fmonth,
  @fmonth_num,
  @world_area
  )

  END

**


2
当您使用top时,最好也使用order by子句,因为如果没有order by,则返回的行将是任意的。 - jpw
3个回答

1
ALTER PROCEDURE [dbo].[sp_BI_Get_AsiaTopTen]
AS 
BEGIN
  SET NOCOUNT ON;

      INSERT INTO [dbo].[tbl_BI_AsiaTopTen]
                      ([FYName],[FMONTH],[FMONTH_NUM],[World_AREA])
    SELECT TOP 10 [FYName] 
                , [FMONTH] 
                , [FMONTH_NUM]
                , [World_AREA]
    FROM [dbo].[tbl_BI_FastReport1_Temp]
    WHERE [World_AREA] = 'Asia'
    AND [FMONTH_NUM] = '201401'
 -- ORDER BY SomeCOlumn 
END

0
尝试使用以下代码替代:
    INSERT INTO [dbo].[tbl_BI_AsiaTopTen]
    (
    [FYName],
    [FMONTH],
    [FMONTH_NUM],
    [World_AREA]
    )
    SELECT TOP 10 
    [FYName], 
    [FMONTH], 
    [FMONTH_NUM],
    [World_AREA]
    FROM [dbo].[tbl_BI_FastReport1_Temp]
    WHERE [World_AREA] = '亚洲'
    AND [FMONTH_NUM] = '201401'


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接