2014-01-22 27 views
0

我寫標量變量函數返回一個整數映射一則strName。以下是我的腳本:Scalar_Variable功能的多個和語句返回「NULL」在SQL

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

ALTER FUNCTION [dbo].[Lookup_BSource_Value] 
(
     -- Add the parameters for the function here 
     @AVal nvarchar(100) 
) 
RETURNS nvarchar(100) 
AS 
BEGIN 
     -- Declare the return variable here 
     DECLARE @Val nvarchar(100) 
     SELECT @Val = Val 

     FROM SMBase 
     WHERE AName = 'a_source' 
     AND (OTypeCode = 1084) 
     AND (AVal = (@AVal)) 

     RETURN @Val 
END 

我應該得到「BA」的結果,但我收到「NULL」。我的語法對於多個AND語句是否正確?

編輯 *

使用前在我的SSIS包的功能,我只是做一個簡單的SELECT dbo.Lookup_BSource_Value(XXXXXXXXX)

這使我空。

下面是我查詢的表的邏輯模式:

USE [MSCRM_M_RC] 
GO 

/****** Object: Table [dbo].[SMBase] Script Date: 1/21/2014 6:29:48 PM ******/ 
SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

CREATE TABLE [dbo].[SMBase](
    [OTypeCode] [int] NOT NULL, 
    [AName] [nvarchar](100) NOT NULL, 
    [AVal] [int] NOT NULL, 
    [LaId] [int] NOT NULL, 
    [OrgId] [uniqueidentifier] NOT NULL, 
    [Val] [nvarchar](4000) NULL, 
    [DOrder] [int] NULL, 
    [VNumber] [timestamp] NULL, 
    [SMId] [uniqueidentifier] NOT NULL, 
CONSTRAINT [cndx_PrimaryKey_SMap] PRIMARY KEY CLUSTERED 
(
    [SMId] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY], 
CONSTRAINT [UQ_SMap] UNIQUE NONCLUSTERED 
(
    [OTCode] ASC, 
    [AName] ASC, 
    [AValue] ASC, 
    [LaId] ASC, 
    [OrgId] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY] 
) ON [PRIMARY] 

GO 

ALTER TABLE [dbo].[SMBase] ADD CONSTRAINT [DF_SMa_SMId] DEFAULT (newid()) FOR [SMId] 
GO 

* 編輯 **

以下是我的我的StringMapTable的邏輯模式:

StringMap(SMID pk, OTypeCode,AName, AVal, LaID, OrgID fk, Val, DOrder, VNumber) 

下面是我的我的TPTRepair表的邏輯模式:

TPTRepair(TPTRepairID pk, Name, Source, TT, LTHrs, CustID fk, PID fk) 

的問題是以下內容:

「源」 字段是在TPTRepair的整數。我正在寫下面的標量函數來引用StringMap以從StringMap中的Value列返回字符串值。我必須有一對夫婦,因爲阿富汗國家發展戰略HASE AName向=「a_source」和OTypeCode有一個NULL到1084 =

我的標量函數的結果,不應該。我的標量函數中的多重AND語句的語法是否正確?

+0

你能告訴基礎表的模式,一些樣本數據,以及你是如何準確地調用該函數? –

+0

@AaronBertrand我已經編輯爲你請 –

+0

一些示例數據將是很好的內容原來的問題,以及你正在使用的實際*** ***語法,不'(XXXXXXXX)'。 –

回答

1

因此,進出口顯然是一個白癡。這是最簡單的事情。 OTypeCode= '10084'而不是'1084'。我是實習生。請原諒我;)這是答案。