一、有時發現存儲過程中,使用局部變量過濾後沒有結果,但實際單獨執行是有數據的。
解決方法:
將局部變量改成 用戶變量。 如果是指針,因爲無法直接把指針賦給用戶變更。所以可以先用局部變量,將局部變量 指定類型賦值給用戶變量。
set @v_ITEMCODE := CONVERT(vITEMCODE ,char); set @v_ITEMQTY := CONVERT(vITEMQTY ,DECIMAL);
- 局部變量:只在當前begin/end代碼塊中有效
- 用戶變量:在客戶端鏈接到數據庫實例整個過程中用戶變量都是有效的。
有的時候在存儲過程中也可以考勤使用臨時表。創建臨時表代碼必須要放到所有DECLARE之後。
drop temporary table if exists demand_str_tmp; CREATE temporary TABLE demand_str_tmp( tmp_vVendorID varchar(50), tmp_vITEMCODE VARCHAR(200), tmp_vITEMQTY DECIMAL(18,3));