[セットトップ]ストアド・プロシージャ呼び出しテーブル名は変数...(基本sql構文の説明を含む)


1.いつ+号を使いますか.
----文字列タイプの文を構成するには、+記号をコネクタとして使用します.一般的に、文字列が文字列変数に接続されている場合にはプラス記号が使用されます.
 :DECLARE @SQL NVARCHAR(1000),@tablename nvarchar(100),@SORTFIELD NVARCHAR(100)
SELECT @TABLENAME=N'MYTABLE',@SORTFIELD=N'USERCODE'
SET @SQL=N'SELECT * from '+@tablename+N' order by '+@FIELDSORT '
      SQL   :
SELECT * from MYTABLE order by USERCODE 

2.       :
----          ,      N'SELECT * FROM '

3.       :
----                 , :N'SELECT * from '+@tablename
FROM       ,        :SELECT * FROMMYTABLE,FROM  MYTABLE    ,    。
4.      :---            。
           :SELECT * FROM MYTABLE WHERE USERCODE=''
       :SET @SQL=N'SELECT * from '+@tablename+' WHERE USERCODE='' '
      :SET @SQL=N'SELECT * from '+@tablename+' WHERE USERCODE=N'''' '
    :             4 。    :
 
 
-------例は以下の通りです.
 
 CREATE PROCEDURE [dbo].[PROC_M_B3_LQ] @F_GSID CHAR(10), @F_ZZRQ INT,@TABLENAME VARCHAR(40),--計算データテーブル名@FIELDNAME VARCHAR(20),--フィールドデータ@TYPE INT,--タイプ:0-四半期;1-年度(過去12ヶ月)@VALES MONEY OUTPUT--計算結果AS BEGIN SET NOCOUNT ONを出力する.DECLARE@SQL VARCHAR(2000)----動的SQL生成キャッシュデータIF EXISTS(SELECT*FROM tedb.dbo.sysobjects WHERE[name]='##B 3'and type='U')drop table##B 3 CREATE TABLE##B 3(F_GSID CHAR(10),F_ZZRQ INT,F_VALUES MONEY, CONSTRAINT [PK_##B3_1] PRIMARY KEY CLUSTERED ( F_GSID ASC, F_ZZRQ ASC )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] SET @SQL='INSERT INTO ##B1T03(F_GSID,F_ZZRQ,F_VALUES) SELECT F_GSID,dbo.fn_datetoint(F_ZZRQ),(SELECT TOP(1) '+@FIELDNAME+' FROM '+@TABLENAME+' WHERE F_GSID=M.F_GSID AND dbo.fn_datetoint(F_ZZRQ)=dbo.fn_datetoint(M.F_ZZRQ) AND F_BBFL=''C'' ) FROM '+@TABLENAME+' AS M WHERE F_GSID='''+@F_GSID+''' AND F_BBFL=''C''' EXEC (@SQL) . . .