关于存储过程中调用存储过程的问题
如下所示:
create table #tt(style_code nvarchar(10))
insert into #tt exec p_xx @year=2006,@month=10
select * from #tt
drop table #tt
注意:如果修改了p_xx(被調用存儲過程),則以下兩種調用情況,需要先直接調用一下p_xx存儲過程,然后才可以正常調用p_xx存儲過程的結果執行其它操作,否則,會出現錯誤:插入錯誤: 資料行名稱或提供的數值數量與資料表定義不相符。
1.查詢分析器中有調用p_xx存儲過程的結果作其它處理的情況:
處理方法:先直接調用P_xx存儲過程一次(如exec p_xx @year=2006,@month=10),然後才可正常使用本存儲過程返回的結果
2.程序中調用的存儲過程中嵌套調用p_xx存儲過程的結果作其它處理的情況::
處理方法:程序中直接調用P_xx存儲過程一次(如exec p_xx @year=2006,@month=10),然後才可正常使用本存儲過程返回的結果
說明:當修改了p_xx后,在查詢分析器中也執行了exec p_xx @year=2006,@month=10,也不能解決以上情況2的問題.必須在程序中直接調用P_xx存儲過程一次,然後才可正常使用本存儲過程返回的結果
問:
1.出現這種情況的原因是什么?
2.那么,有沒有什么方法,在修改了p_xx(被調用存儲過程)后,以上兩種調用情況中,不需要執行exec p_xx @year=2006,@month=10,即可正常調用p_xx返回的結果呀?