⑴ sqlserver提示超過最大前綴
[DATABASENAME].[SCHEMANAME].[表/過程/函數/視圖...]
所以
select [DB1.new].dbo.getDeptNameByName('')
是正確的。
不跨DataBase就沒必要加完整前綴,
直接select dbo.getDeptNameByName('')
⑵ sqlserver關於別名的問題
A2,A4為原來的,其餘是分類匯總的
作用域的分別主要是知道語句中子查詢的執行順序,如果到了外層查詢進行重命名了,那麼內層的就沒有用了。
⑶ sqlserver2008為列取別名的問題
這是sql在sqlserver中物理查詢順序的問題,看下圖
where字句會在select之前執行,那麼自然無法知道select中的列別名A到底是什麼東西,它只會檢查A到底是不是AL_ReturnApply的列名,如果不是那麼就會編譯出錯,關於物理查詢順序,在sql2005(8)技術內幕的書中都有講到