SQL存储过程,从辅助表中选择数据

时间:2010-09-17 15:55:24

标签: sql stored-procedures

我正在尝试修改我编写的存储过程以从其他表中提取数据并将其插入表中。

基本上我有一个表,我们按ID存储映射。在该表中,我将一个应该存储该数据串联的字段组合在一起,这样可以正常工作。问题是存储映射的ID,而不是属于该ID的名称。

我的存储过程:

`USE [SNHULeads]

GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[spSNHUCodeCreate]
(
@Source numeric(18,0),
@ProgramName numeric(18,0),
@Division numeric(18,0),
@Medium numeric(18,0),
@content varchar(50),
@URL varchar(500) = 'N/A',
@redirect varchar(100),
@Cost numeric(18,0),
@Notes varchar(500) = 'N/A',
@StartDate datetime,
@EndDate datetime,
@oper varchar(50),
@id varchar(50)
)

AS

DECLARE @SNHUCode numeric(18,0)
DECLARE @DateCreated datetime 
SET @SNHUCode = (SELECT MAX(snhuCODE) + 1 FROM [dbo].[VendorProgram])
SET @DateCreated = GETDATE()`

IF @URL != 'N/A'
BEGIN
    SET @URL = 'http://www.snhu.edu/' + @URL + '.asp?utm_source=' +    CONVERT(varchar(50), @Source) + '&utm_medium=' + CONVERT(varchar(50), @Medium) + '&utm_content=' + CONVERT(varchar(50), @content) + '&utm_campaign=' + CONVERT(varchar(50), @ProgramName) + '&SNHU_Segment=' + CONVERT(varchar(50), @Division)
END

INSERT INTO [SNHULeads].[dbo].[VendorProgram]
       ([vendorID]
       ,[programID]
       ,[divisionID]
       ,[mediumID]
       ,[snhuCODE]
       ,[content]
       ,[url]
       ,[cost]
       ,[Notes]
       ,[StartDate]
       ,[EndDate]
       ,[redirect]
       ,[DateCreated])
 VALUES
       (@Source
       ,@ProgramName
       ,@Division
       ,@Medium
       ,@SNHUCode
       ,@content
       ,@URL
       ,@Cost
       ,@Notes
       ,@StartDate
       ,@EndDate
       ,@redirect
       ,@DateCreated)`

基本上,使用URL列,我正在捕获我发送的ID,这不是我想要的。我似乎无法找到一种方法来选择与我发送的@Source ID相对应的名称。

我试过类似的事情,在proc中声明一个新变量,然后选择它:

DECLARE @sourceName varchar(50) SET @sName = (SELECT Leads.dbo.Vendors.Source WHERE mappingID = @Source)

这给了我一个错误,“无法绑定多部分标识符”Vendors.mappingID“。”

对我有任何帮助吗?不要过分夸大SQL,这显然不是我的强项。

1 个答案:

答案 0 :(得分:0)

好的我不能确定这是你想要的,但假设@source与名为MappingId的数据库中名为Vendors的表中的Leads列相关联;然后这个SQL会将一个名为@sourceName的变量设置为相应的源名称。然后,您可以将此数据插入另一个表格。

这是你在找什么?

    Declare @sourceName varchar(50)

    Select @sourceName = SourceName
    From Leads.dbo.Vendors
    Where MappingId = @Source

注意:此SQL假定传入的每个@source只存在一行。