預存程序調用表名為變數…(含基本sql文法說明)

來源:互聯網
上載者:User

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]<br />@F_GSIDCHAR(10),<br />@F_ZZRQINT,<br /> @TABLENAME VARCHAR(40),--計算資料表名<br /> @FIELDNAME VARCHAR(20), --欄位資料<br /> @TYPE INT, --類型:0-季度;1-年度(過去12個月)<br /> @VALUES MONEY OUTPUT--輸出計算結果<br />AS<br />BEGIN<br />SET NOCOUNT ON;<br />DECLARE<br />@SQL VARCHAR(2000) ------動態SQL產生快取資料</p><p>IF EXISTS(SELECT * FROM tedb.dbo.sysobjects WHERE [name]='##B3' and type='U') drop table ##B3<br />CREATE TABLE ##B3 (F_GSID CHAR(10),F_ZZRQ INT,F_VALUES MONEY,<br />CONSTRAINT [PK_##B3_1] PRIMARY KEY CLUSTERED<br />(<br />F_GSID ASC,<br />F_ZZRQ ASC<br />)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]<br />) ON [PRIMARY]</p><p>SET @SQL='INSERT INTO ##B1T03(F_GSID,F_ZZRQ,F_VALUES)<br />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'''<br />EXEC (@SQL)<br />.<br />.<br />. 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.