【发布时间】:2014-01-22 01:21:27
【问题描述】:
我在 sql 中编写 Scalar-Variable 函数以返回由整数映射的 strName。以下是我的脚本:
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 包中使用该函数之前,我只是在做一个简单的 选择 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 列返回字符串值。我必须有几个 ands 因为 AName hase to = 'a_source' 而 OTypeCode 必须 = 1084。
我的标量函数导致 NULL 并且不应该。从上面的标量函数中的多个 AND 语句来看,我的语法是否正确?
【问题讨论】:
-
您能否展示基础表的架构、一些示例数据以及您调用该函数的准确程度?
-
@AaronBertrand 我已经为您请求的内容编辑了原始问题
-
一些示例数据以及您正在使用的实际语法,而不是
(XXXXXXXX)。 -
@AaronBertrand 我已经发布了您要求的附加信息。抱歉花了一点时间。我昨天下班刚回来。
标签: sql-server function tsql ssis