1 declare @SQL nvarchar(max)
2 set @SQL = 'select zlt_productdetail_0.createdbyname as ''createdbyname'',
3 .
4 .
5 .
6 .
7 LE_B097C76F.zlt_custname as ''zlt_custname''
8 from (' + @CRM_FilteredZlt_productdetail_ + ') as zlt_productdetail_0 left
9 outer join
10 FilteredZLT_productid as LE_B097C76F on
11 (zlt_productdetail_0.zlt_productdetail = LE_B097C76F.zlt_productidid)'
12 exec(@SQL)
想問有人看得懂這SQL語法嗎?問題如下
1、這段法語是T-SQL型語法嗎??
2、第一行是否在在宣告nvarchar變數為最大值?? 這declare是指?? 這@SQL是指??
3、第二行是否是要將SQL語法丟入第一行的宣告變數中??
4、第七行是否能改成LE_B097C76F.zlt_custname as ''ABC''(as後面可改成想要的名稱)??
5、第八行(' + @CRM_FilteredZlt_productdetail_ + ')是啥???一般不是會放資料表?
6、如有4張資料表要做關連是否可用left outer join關連起來? 或是其他方法?
7、第十二行是否是指結束??
= =有人能解答嗎?跟我以前學的SQL語法不太一樣
1、這段法語是T-SQL型語法嗎??
是的, 而且看起來, 這應該是包在SQL-Server的預存程序裡的code吧?
2、第一行是否在在宣告nvarchar變數為最大值?? 這declare是指?? 這@SQL是指??
這是定義一個名為 @SQL 的變數, 格式為 nvarchar , 可用長度為 max (max要看SQL Server的文件寫多少? 不過應該不會小於4000吧?)
3、第二行是否是要將SQL語法丟入第一行的宣告變數中??
對
4、第七行是否能改成LE_B097C76F.zlt_custname as ''ABC''(as後面可改成想要的名稱)??
這是select要輸出的欄位重新命名, 你要怎麼改都可以吧? 除非沖到sql的保留字, 不然前後的 '' 都可以拿掉
5、第八行(' + @CRM_FilteredZlt_productdetail_ + ')是啥???一般不是會放資料表?
這種用法是你多個table有一樣的欄位, 為了方便動態跨table抓資料, 所以才把table名稱由變數傳入
6、如有4張資料表要做關連是否可用left outer join關連起來? 或是其他方法?
join的相關語法, 你select時要怎麼串,通常都可以(例外是有用到子查詢時,有時候會被當成不合SQL語法, 不過你寫的沒有用到巢式select, 應該還不用擔心)
7、第十二行是否是指結束??
不是, 那是執行你放在@SQL變數中的 select 命令, 少了這行的話, 前面就沒意義了
就是說因為table name是變動的,因此用變數來代替
假設今天用的是mytable001 ,可是另一個程式是要用 mytable002
就可以定義 set @CRM_FilteredZlt_productdetail='mytable002'
這樣一來取得的table就會不同
from (' + @CRM_FilteredZlt_productdetail_ + ')
另外他的 from ()<---用括號包起來,也有可能放的是一句SQL 查詢,而利用子查詢來當成一個table