Tsql 如何创建用于返回的临时表?

Tsql 如何创建用于返回的临时表?,tsql,sql-server-2000,Tsql,Sql Server 2000,我正在构建一个存储过程,它将充当一个配置字符串代码读取器,它将接受一个@config varchar(255)变量 此配置字符串决定了我们模型中的26个设置 取一个配置字符串条目: declare @casingType varchar(50); set @casingType=case SubString(@config, 34, 1) when '1' then 'U-Flange - All Around w/ Stacking Flanges' when '2' then 'U-

我正在构建一个存储过程,它将充当一个配置字符串代码读取器,它将接受一个
@config varchar(255)
变量

配置字符串决定了我们模型中的26个设置

取一个配置字符串条目:

declare @casingType varchar(50);
set @casingType=case SubString(@config, 34, 1)
  when '1' then 'U-Flange - All Around w/ Stacking Flanges'
  when '2' then 'U-Flange - All Around'
  when '3' then 'U-Flange - No Top & Bottom'
  when '4' then 'U-Flange - Flat Top & Bottom'
  when '5' then 'Box Bracket - End Plates Only'
  when '6' then 'Box Bracket - All Around'
  when '7' then 'Slip & Drive Bracket'
  when '8' then 'L Flange'
  when '0' then 'No Casing'
  when 'A' then '3 Sided Box - No Top & Bottom'
  when 'B' then '3 Sided Box - Top & Bottom'
  when 'C' then '3 Sided Box - Top or Bottom'
  when 'D' then 'U-Flange w/ Stacking Plates'
  when 'E' then 'U-Flange Temp Top & Bottom'
  when 'F' then 'Flat Bracket'
  when 'G' then 'A Coil Slab Bracket'
  when 'H' then '2 Sided Box'
  when 'I' then '3 Sided Box w/ Temp Top & Bottom'
  when 'O' then 'One Plus One Casing'
  when 'X' then 'Special'
  when 'Y' then 'Auto Braze'
  else 'Error' end;
我要返回的是一(1)行的表,其中包含每个项目的文本字段

我是创建要返回的临时表还是创建其他类型的表来返回

我希望这是有道理的。可能是我的措辞不正确或使用了不恰当的SQL术语

解决方案:因此,我实现了这一点,下面是我用来实现这一点的代码

通常,我们的销售人员或工程师在配置字符串中工作时不知道某个字母的含义,因此他们必须查找该字母。超过70%的时间,这会导致更多的字母代码搜索。因此,我们只想返回与特定配置相关的所有详细信息

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      Joe Pool
-- Create date: 21-22 January 2013
-- Description: This returns a DataTable representation of the Model Configuration
-- =============================================
CREATE PROCEDURE sp1_Configurator(@config varchar(255)) as
BEGIN
SET NOCOUNT ON;
declare @len int;
declare @coilType varchar(50), @coilPattern varchar(50), @rowsDeep varchar(50);
declare @finHeight varchar(50), @finLength varchar(50), @finThickMat varchar(50);
declare @finPerInch varchar(50), @finTreatment varchar(50), @finCoating varchar(50);
declare @tubeWallThk varchar(50), @tubeType varchar(50), @qty varchar(50);
declare @tubeCoat varchar(50), @gauge varchar(50), @material varchar(50);
declare @casingType varchar(50), @customerCode varchar(50), @caseCoat varchar(50);
declare @arrangement varchar(50), @connType varchar(50), @connSize varchar(50);
declare @distributor varchar(50), @circuitry varchar(50), @coilApp varchar(50);
declare @agency varchar(50), @outsideCoat varchar(50);
declare @table table (
  CoilType varchar(50) null, CoilPattern varchar(50) null, RowsDeep varchar(50) null, 
  FinHeight varchar(50) null, FinLength varchar(50) null, FinThickMat varchar(50) null, 
  FinPerInch varchar(50) null, FinTreatment varchar(50) null, FinCoating varchar(50) null, 
  TubeWallThk varchar(50) null, TubeType varchar(50) null, Qty varchar(50) null, 
  TubeCoat varchar(50) null, Gauge varchar(50) null, Material varchar(50) null, 
  CasingType varchar(50) null, CustomerCode varchar(50) null, CaseCoat varchar(50) null, 
  Arrangement varchar(50) null, ConnType varchar(50) null, ConnSize varchar(50) null, 
  Distributor varchar(50) null, Circuitry varchar(50) null, CoilApp varchar(50) null, 
  Agency varchar(50) null, OutsideCoat varchar(50) null
);
set @len=Len(@config)
if (@len=53) begin
  set @coilType=case SubString(@config, 1, 1)
    when 'C' then 'Slab' 
    when 'B' then '1 + 1'
    when 'A' then 'A Coil (OBS)'
    when 'X' then 'Special'
    else 'Error' end;
  set @coilPattern=case SubString(@config, 2, 1)
    when '7' then '7mm Tube (.827 x .472 Staggered)'
    when '6' then '5/16" Tube (1 x 5/8 Staggered)(OBS)'
    when '3' then '3/8" Tube (1 x .866 Staggered)'
    when 'P' then '1/2" Tube (1 1/4 x 1.08 Staggered)'
    when '5' then '5/8" Tube (1 1/2 x 1.299 Staggered)'
    else 'Error' end;
  set @rowsDeep=SubString(@config, 3, 2);
  set @finHeight=SubString(@config, 6, 5);
  set @finLength=SubString(@config, 12, 6);
  set @finThickMat=case SubString(@config, 19, 1)
    when 'A' then '.0045 AL (OBS)'
    when 'J' then '.0055 AL (OBS)'
    when 'B' then '.0060 AL'
    when 'C' then '.0075 AL'
    when 'D' then '.0100 AL'
    when 'E' then '.0045 CU (OBS)'
    when 'K' then '.0050 CU (OBS)'
    when 'F' then '.0060 CU'
    when 'G' then '.0075 CU (OBS)'
    when 'H' then '.0100 CU (OBS)'
    when 'P' then '.0065 Pre-Coated'
    when 'X' then 'Special'
    else 'Error' end;
  set @finPerInch=SubString(@config, 20, 2);
  set @finTreatment=case SubString(@config, 22, 2)
    when 'FS' then 'Flat / Straight (OBS)'
    when 'FR' then 'Flat / Rippled (OBS)'
    when 'CS' then 'Corrugated / Straight (OBS)'
    when 'CR' then 'Corrugated / Rippled'
    when 'SS' then 'Sine / Straight (OBS)'
    when 'SR' then 'Sine / Rippled'
    when 'LS' then 'Louvered / Straight (OBS)'
    when 'LR' then 'Louvered / Rippled (OBS)'
    when 'RL' then 'Embossed Arch / Rippled*'
    when 'XX' then 'Special'
    else 'Error' end;
  set @finCoating=case SubString(@config, 24, 1)
    when 'N' then 'See Coil Coating'
    when 'A' then 'Alodine (OBS)'
    when 'K' then 'Technicoat'
    when 'P' then 'Paint Bond'
    when 'X' then 'Special'
    else 'Error' end;
  set @tubeWallThk=case SubString(@config, 26, 1)
    when 'A' then '.012 Smooth (5/16)(OBS)'
    when 'B' then '.014 Smooth (3/8)(OBS)'
    when 'C' then '.017 Smooth (1/2)'
    when 'D' then '.018 Smooth (5/8)'
    when 'E' then '.025 Smooth (1/2, 5/8)'
    when 'F' then '.035 Smooth (1/2, 5/8)'
    when 'G' then '.049 Smooth (5/8)'
    when 'H' then '.012 Rifled (3/8)'
    when 'K' then '.012 Rifled (7mm)'
    when 'L' then '.016 Rifled (7mm) (OBS)'
    when 'P' then '.06 Rifled (1/2)'
    when 'X' then 'Special (.016 Rifled 3/8)(OBS)'
    else 'Error' end;
  set @tubeType=case SubString(@config, 27, 1)
    when '1' then 'ST Flexpand'
    when '2' then 'ST ALL DL Flexpand'
    when '3' then 'ST w/DLST Flexpand'
    when '5' then 'HP Flexpand'
    when '6' then 'HP w/ST Flexpand'
    when 'A' then 'ST w/DL*'
    when 'B' then 'HP w/DL*'
    when 'C' then 'Hairpin w/Straight*'
    when 'D' then 'Hairpin 1/Hairpin .8* (OB)'
    when 'E' then 'HP / DL / ST*'
    when 'F' then 'HP / DL / ST / ST DL*'
    when 'G' then 'HP / DL ST*'
    when 'H' then 'Hairpint (HP)'
    when 'I' then 'HP / ST / DL HP*'
    when 'J' then '.8 HP* (OBS)'
    when 'K' then 'One Short HP / One Long HP*'
    when 'L' then 'HP w/Special DL*'
    when 'M' then 'HP w/Special DL / ST*'
    when 'N' then 'HP 1/HP .8/ST* (OBS)'
    when 'O' then 'HP 1/HP .8/DL 1 HP/DL .8 HP* (OBS)'
    when 'P' then 'All DL ST'
    when 'Q' then 'ST w/Special DL ST*'
    when 'R' then 'HP .8 / ST* (OBS)'
    when 'S' then 'Straight (ST)'
    when 'T' then 'Hydro Ball (HB)'
    when 'U' then 'HB w/ DL*'
    when 'V' then 'ST w/Spin Down*'
    when 'W' then 'HP 7mm .827/.627 Angle*'
    when 'Y' then 'HP 7mm All .627*'
    when 'X' then 'Special*'
    else 'Error' end;
  set @qty=SubString(@config, 28, 2);
  set @tubeCoat=case SubString(@config, 30, 1)
    when 'N' then 'No Coating'
    when 'T' then 'Tinned Plating (OBS)'
    when 'X' then 'Special'
    else 'Error' end;
  set @gauge=case SubString(@config, 32, 1)
    when '2' then '20 Gauge'
    when '8' then '18 Gauge'
    when '6' then '16 Gauge'
    when '4' then '14 Gauge'
    when '5' then '0.050" THK'
    when '3' then '0.063" THK'
    when '9' then '0.090" THK'
    when 'X' then 'Special'
    else 'Error' end;
  set @material=case SubString(@config, 33, 1)
    when 'G' then 'Galvanized'
    when 'S' then 'Stainless'
    when 'C' then 'Copper'
    when 'A' then 'Aluminum'
    when 'P' then 'Paint Bond'
    when 'X' then 'Special'
    else 'Error' end;
  set @casingType=case SubString(@config, 34, 1)
    when '1' then 'U-Flange - All Around w/ Stacking Flanges'
    when '2' then 'U-Flange - All Around'
    when '3' then 'U-Flange - No Top & Bottom'
    when '4' then 'U-Flange - Flat Top & Bottom'
    when '5' then 'Box Bracket - End Plates Only'
    when '6' then 'Box Bracket - All Around'
    when '7' then 'Slip & Drive Bracket'
    when '8' then 'L Flange'
    when '0' then 'No Casing'
    when 'A' then '3 Sided Box - No Top & Bottom'
    when 'B' then '3 Sided Box - Top & Bottom'
    when 'C' then '3 Sided Box - Top or Bottom'
    when 'D' then 'U-Flange w/ Stacking Plates'
    when 'E' then 'U-Flange Temp Top & Bottom'
    when 'F' then 'Flat Bracket'
    when 'G' then 'A Coil Slab Bracket'
    when 'H' then '2 Sided Box'
    when 'I' then '3 Sided Box w/ Temp Top & Bottom'
    when 'O' then 'One Plus One Casing'
    when 'X' then 'Special'
    when 'Y' then 'Auto Braze'
    else 'Error' end;
  set @customerCode=case SubString(@config, 35, 5)
    when '00' then 'Standard'
    when '14' then 'AAON Damper'
    when '15' then 'AAON Cond.'
    when '16' then 'AAON Evap.'
    when 'XX' then 'Special'
    else 'Error' end;
  set @caseCoat=case SubString(@config, 37, 1)
    when 'N' then 'See Coil Coating'
    when 'A' then 'Alodine (OBS)'
    when 'C' then 'Ceramic'
    when 'X' then 'Special'
    else 'Error' end;
  set @arrangement=SubString(@config, 39, 2);
  set @connType=case SubString(@config, 41, 1)
    when '0' then 'No Connection'
    when 'M' then 'MPT'
    when 'F' then 'FPT'
    when 'S' then 'Sweat'
    when 'W' then 'Water Bead (OBS)'
    when 'B' then 'Barbed FTG (OBS)'
    when 'N' then 'Male Flare'
    when 'G' then 'Female Flare'
    when 'O' then 'Male O-Ring (OBS)'
    when 'P' then 'Female O-Ring (OBS)'
    when 'X' then 'Special'
    else 'Error' end;
  set @connSize=case SubString(@config, 42, 1)
    when '0' then 'No Connection'
    when '1' then '3/8 OD'
    when '2' then '1/2 OD'
    when '3' then '5/8 OD'
    when '4' then '7/8 OD'
    when '5' then '1-1/8 OD'
    when '6' then '1-3/8 OD'
    when '7' then '1-5/8 OD'
    when '8' then '2-1/8 OD'
    when '9' then '2-5/8 OD'
    when 'A' then '3-1/8 OD'
    when 'B' then '5/16 OD'
    when 'C' then '3/4 OD'
    when 'D' then '4-1/8 OD'
    when 'E' then '3/16 OD'
    when 'X' then 'Special'
    else 'Error' end;
  set @distributor=case SubString(@config, 44, 4)
    when 'N000' then 'None Required'
    when 'X001' then 'Special'
    else 'Factory Assigned' end;
  set @circuitry=case SubString(@config, 49, 2)
    when 'SS' then 'Single Circuit'
    when 'FF' then 'Full'
    when 'HH' then 'Half'
    when 'QQ' then 'Quarter'
    when 'DD' then 'Double'
    when 'DH' then '1-1/2'
    when 'II' then 'Intertwined <2'
    when 'RS' then 'Row Split <2'
    when 'FS' then 'Face Split <2'
    when '00' then 'No Circuitry'
    when '01' then 'One Circuit'
    when '02' then 'Two Circuits'
    when '03' then 'Three Circuits'
    when '04' then 'Four Circuits'
    when '0S' then 'No Circuitry + SubCooler'
    when '1S' then 'One Circuit + SubCooler'
    when '2S' then 'Two Circuits + SubCooler'
    when '3S' then 'Three Circuits + SubCooler'
    when 'XX' then 'Special'
    else 'Error' end;
  set @coilApp=case SubString(@config, 51, 1)
    when 'D' then 'Drainable Water'
    when 'W' then 'Water'
    when 'G' then 'Cond / SubCooler'
    when 'C' then 'Condenser'
    when 'E' then 'Evaporator'
    when 'S' then 'Steam'
    when 'N' then 'Steam Distributor'
    when 'B' then 'Booster'
    when 'H' then 'Heat Reclaim'
    when 'P' then 'Heat Pipe (OBS)'
    when 'L' then 'Glycol'
    when 'O' then 'Oil (OBS)'
    when 'X' then 'Special'
    else 'Error' end;
  set @agency=case SubString(@config, 52, 1)
    when '0' then 'None'
    when 'A' then 'ARI'
    when 'B' then 'ARI + UL / CSA'
    when 'C' then 'UL / CSA'
    when 'E' then 'ETL / DOE'
    else 'Error' end;
  set @outsideCoat=case SubString(@config, 53, 1)
    when 'N' then 'No Coating'
    when 'A' then 'Ceramic'
    when 'C' then 'Chromocoat'
    when 'E' then 'Epoxy'
    when 'G' then 'Americoat Grey (OBS)'
    when 'H' then 'Heresite'
    when 'K' then 'Phenolic (Technicoat)'
    when 'L' then 'ElectroFin'
    when 'P' then 'Phenolic (OBS)'
    when 'X' then 'Special'
    else 'Error' end;
  insert into @table
    (CoilType, CoilPattern, RowsDeep, FinHeight, FinLength, FinThickMat, FinPerInch, FinTreatment, FinCoating,
     TubeWallThk, TubeType, Qty, TubeCoat, Gauge, Material, CasingType, CustomerCode, CaseCoat, Arrangement,
     ConnType, ConnSize, Distributor, Circuitry, CoilApp, Agency, OutsideCoat)
     values
    (@coilType, @coilPattern, @rowsDeep, @finHeight, @finLength, @finThickMat, @finPerInch, @finTreatment, @finCoating,
    @tubeWallThk, @tubeType, @qty, @tubeCoat, @gauge, @material, @casingType, @customerCode, @caseCoat, @arrangement,
    @connType, @connSize, @distributor, @circuitry, @coilApp, @agency, @outsideCoat);
end
select * from @table;
END
GO
将ANSI_空值设置为ON
去
在上设置带引号的\u标识符
去
-- =============================================
--作者:乔·普尔
--创建日期:2013年1月21日至22日
--描述:返回模型配置的DataTable表示形式
-- =============================================
创建过程sp1\u配置器(@config varchar(255))作为
开始
不计数;
声明@lenint;
声明@coilType varchar(50)、@coilPattern varchar(50)、@ROWSDEP varchar(50);
声明@finHeight varchar(50)、@finLength varchar(50)、@finThickMat varchar(50);
声明@finPerInch varchar(50)、@finTreatment varchar(50)、@finCoating varchar(50);
声明@tubeWallThk varchar(50)、@tubeType varchar(50)、@qty varchar(50);
声明@tubeCoat varchar(50)、@gauge varchar(50)、@material varchar(50);
声明@casingtypevarchar(50)、@customercodevarchar(50)、@caseCoat varchar(50);
声明@arrangement varchar(50)、@connType varchar(50)、@connSize varchar(50);
声明@distributor varchar(50)、@Circuits varchar(50)、@coilApp varchar(50);
声明代理varchar(50),@outsideCoat varchar(50);
声明@table(
CoilType varchar(50)null、CoilPattern varchar(50)null、ROWSDEP varchar(50)null、,
FinHeight varchar(50)null、FinLength varchar(50)null、FinThickMat varchar(50)null、,
FinPerInch varchar(50)null,FinTreatment varchar(50)null,FinCoating varchar(50)null,
TubeWallThk varchar(50)null,TubeType varchar(50)null,Qty varchar(50)null,
管壳varchar(50)零位,仪表varchar(50)零位,材料varchar(50)零位,
CasingType varchar(50)null、CustomerCode varchar(50)null、CaseCoat varchar(50)null、,
排列varchar(50)null,ConnType varchar(50)null,CONNSSIZE varchar(50)null,
分配器varchar(50)null,电路varchar(50)null,CoilApp varchar(50)null,
代理varchar(50)空,外涂层varchar(50)空
);
设置@len=len(@config)
如果(@len=53)开始
设置@coilType=case子字符串(@config,1,1)
当“C”然后是“Slab”
当“B”然后是“1+1”
当“A”然后是“A线圈(OBS)”时
当“X”然后是“特殊”
否则“错误”结束;
set@coilPattern=case子字符串(@config,2,1)
当“7”时,则“7毫米管(.827 x.472交错排列)”
当为“6”时,则为“5/16”管(1 x 5/8交错排列)(OBS)”
当“3”时,则为“3/8”管(1 x.866交错排列)”
当为“P”时,则为“1/2”管(1 1/4 x 1.08交错排列)”
当为“5”时,则为“5/8”管(1 1/2 x 1.299交错排列)”
否则“错误”结束;
设置@rowsdep=SubString(@config,3,2);
设置@finHeight=SubString(@config,6,5);
设置@finLength=SubString(@config,12,6);
设置@finThickMat=case子字符串(@config,19,1)
当'A'然后'.0045 AL(OBS)'
当'J'然后'.0055 AL(OBS)'
当'B'然后.0060 AL'
当'C'然后'.0075 AL'
什么时候“D”然后“0100 AL”
当“E”时,则为.0045 CU(OBS)
当“K”时,则为.0050 CU(OBS)
当“F”然后是“0060 CU”
当“G”时,则为.0075 CU(OBS)
当“H”时,则为.0100 CU(OBS)'
当“P”时,则为“0065预涂”
当“X”然后是“特殊”
否则“错误”结束;
设置@finPerInch=SubString(@config,20,2);
设置@finTreatment=case子字符串(@config,22,2)
当“FS”时,则为“平直(OBS)”
当“FR”时,则为“平坦/波纹(OBS)”
当“CS”时,则为“波纹/直纹(OBS)”
当“CR”时,则为“波纹/波纹”
当“SS”时,则为“正弦/直线(OBS)”
当'SR'时,则为'Sine/涟漪'
当“LS”时,则为“百叶窗/直行(OBS)”
当“LR”然后是“百叶窗/波纹(OBS)”时
当“RL”然后是“浮雕拱门/波纹*”
当'XX'时,则为'Special'
否则“错误”结束;
设置@finCoating=case子字符串(@config,24,1)
当“N”时,则“见线圈涂层”
当‘A’然后‘阿洛丁(OBS)’时
当'K'然后'Technicoat'
当“P”然后是“油漆粘结”
当“X”然后是“特殊”
否则“错误”结束;
设置@tubeWallThk=case子字符串(@config,26,1)
当'A'然后.012平滑(5/16)(OBS)'
当'B'时,则.014平滑(3/8)(OBS)'
当'C'时,则.017平滑(1/2)'
当'D'然后.018平滑(5/8)'
当“E”时,则为.025平滑(1/2,5/8)'
当“F”时,则为.035平滑(1/2,5/8)'
当'G'时,则.049平滑(5/8)'
当“H”时,则为.012膛线(3/8)'
当'K'然后.012膛线(7毫米)'
当'L'然后.016膛线(7毫米)(OBS)'
当'P'然后.06膛线(1/2)'
当“X”时,则“特殊(.016膛线3/8)(OBS)”时
否则“错误”结束;
设置@tubeType=case子字符串(@config,27,1)
当“1”时,则为“ST Flexpand”
当'2'时,则'ST ALL DL Flexpand'
当“3”时,则“ST w/DLST Flexpand”
当“5”时,然后是“HP Flexpand”
当“6”时,然后是“HP w/ST Flexpand”
当“A”时,则“w/DL*”
当“B”时,则“HP w/DL*”
当“C”时,然后是“发夹w/直*”
当'D'时,则'Hairpin 1/Hairpin.8*(OB)'
当“E”时,然后是“HP/DL/ST*”
当“F”时,则为“HP/DL/ST/ST DL*”
当“G”时,则为“HP/DL ST*”
当“H”然后是“Hairpint(HP)”时
当“I”时,然后是“HP/ST/DL HP*”
什么时候
create function CastingTypeFunction(@config varchar(255))
returns varchar(50)
as
begin
  declare @casingType varchar(50)
  set @casingType=case SubString(@config, 34, 1)
    when '1' then 'U-Flange - All Around w/ Stacking Flanges'
    when '2' then 'U-Flange - All Around'
    when '3' then 'U-Flange - No Top & Bottom'
    when '4' then 'U-Flange - Flat Top & Bottom'
    when '5' then 'Box Bracket - End Plates Only'
    when '6' then 'Box Bracket - All Around'
    when '7' then 'Slip & Drive Bracket'
    when '8' then 'L Flange'
    when '0' then 'No Casing'
    when 'A' then '3 Sided Box - No Top & Bottom'
    when 'B' then '3 Sided Box - Top & Bottom'
    when 'C' then '3 Sided Box - Top or Bottom'
    when 'D' then 'U-Flange w/ Stacking Plates'
    when 'E' then 'U-Flange Temp Top & Bottom'
    when 'F' then 'Flat Bracket'
    when 'G' then 'A Coil Slab Bracket'
    when 'H' then '2 Sided Box'
    when 'I' then '3 Sided Box w/ Temp Top & Bottom'
    when 'O' then 'One Plus One Casing'
    when 'X' then 'Special'
    when 'Y' then 'Auto Braze'
    else 'Error' end

    return @casingType
end;
 select dbo.CastingTypeFunction(@config)
CREATE TABLE CasingType
    ([CasingTypeId] varchar(1), [CasingValue] varchar(41))
;
select 
  case 
    when c.casingtypeid is null 
    then 'Error'
    else c.casingvalue end
from
(
  select '12323212334234231211231212121qwe1212312334234234' config  -- replace with your config values
) src
left join CasingType c
  on SubString(src.config, 34, 1) = c.casingtypeid