我正在切換某些sql邏輯在應用程序中通過多次來回數據庫調用處理sql存儲過程和函數,因此一次調用可以完成以前許多工作。表列函數混合列
這種邏輯的大部分要求在不同的數據子集之間進行連接,因此我將這些邏輯嵌入到函數中以便於加入。這個過程很順利,但是現在這些功能似乎有點瘋狂,開始混淆我的列。我認爲這是由於修改的結果而發生的,因爲我在進一步開發應用程序時進一步提高了堆棧,但是我不確定。
以下是與語言鎖定有關的列規範。
而且下面是從混合起來列苦難的功能。它使用更爲複雜的邏輯調用另一個函數,所以我不會打擾發佈,而是直接調用該函數的結果。
最後一個查詢,以兩個有問題的功能,以及使用作爲數據源的內部函數的結果。源函數正確地返回數據,但來自另一個函數的select *會導致數據完全混合,這顯然會導致線下的邏輯完全失敗。
任何想法,這到底是怎麼回事?是否因爲我懷疑其他變化的結果?如果是這樣,有沒有一種方法可以級聯?
感謝
編輯進一步檢查發現有問題的功能缺失兩列到左邊,儘管SELECT *
名稱在您的查詢中選擇列被忽視的變化。如果你給他們起名,他們會(a)總是按照你定義的順序返回,並且(b)當基礎數據源發生變化時(即你的缺失列/重命名列將立即顯而易見),乾淨地打破。 – tvanfosson
這不是列的順序,而是數據。一個位域中有一個VARCHAR。看看兩個結果集之間的IsLanguageLocked – Hawxby