1樓:網友
@yf在你的儲存過程中是定義了,但是在@sql中沒有定義,當你執行@sql的時候,外面定義的變數在裡面是無效的。給你3點建議。
1. 能不用動態sql儘量不要用,因為系統沒法給你預先確定執行計劃,所以動態sql是不高效的。
2. 既然你用了動態sql,那麼複雜的判斷邏輯就不要放在 @sql 裡面了。而是放在外面。
3. 外面定義的@yf,是一個變數,如果直接用在@sql那就不是變數,而僅僅是一個符號,所以只可以用 @sql = sql + yf的方式使用,不可以在裡面直接用。當然還要注意單引號。
4. 臨時表不是表變數,用完記得刪除。 如果涉及到的資料不是特別多,建議你用表變數效率更高。declare @test001 table (a_yf int,a_dwbh int)
2樓:生活呀真美好
我修改儲存過程時,一般是先刪除,再新建,否則有的版本在執行可能報錯。
儲存過程除錯,我一般是把內容複製到查詢分析器中,刪除儲存過程的定義語句,按多條sql語句執行的方法試驗,呵呵,這樣簡單。
case when @fy=''01'' then a_ncye else a_dqye end
查一下幫助,建議加上括號。
呵呵,欄位和變數是拼音呀,建議網上找一下開發規範,呵呵,曾經是同行。
sql server2005儲存過程的問題
3樓:匿名使用者
首先要明確的是,要查詢訂單資訊,輸入和輸出各是什麼。
輸入一定包含客戶的使用者名稱,因為客戶只能檢視自己的資訊。還可能包括訂單日期等引數。
輸出將會是一個表,包含訂單的各種資訊,但不包括主鍵。可能會有多條記錄。
檢視無法加引數查詢所以首先排除a,scalar udf只能輸出單個數值,無法輸出一個表,所以c也排除,而d則允許顧客看到訂單的主鍵,剩下的只有b.
順便說,除了儲存過程外,另一個選擇可以用帶引數的table value udf查詢。
sql儲存過程中根據判斷拼接sql語句然後執行
雨夜 狂想 我給你舉一個構造sql語句的例子,首先把sql語句計算出來,然後再執行這個計算出來的sql語句 declare lssql nvarchar 1024 a varchar 10 b varchar 10 c varchar 32 set a select set b set c from...
ASP編寫過程中的SQL查詢問題
sql select from users where username text 改為 樓主這裡的使用者應該是字元吧 上述sql語句不正確,故下面的rs.recordcount也不顯示0 dim text,password text trim request.form text password ...
oracle 儲存過程中in條件傳引數
樓上的可以,不過有些語法錯誤,我改改,呵呵 create or replace procedure pd1 p 1 number,p 2 number,p 3 number isv sql varchar2 4000 begin v sql select from table where id in...