0
這是在存儲過程中並不起作用(我指的exec
部分):在存儲過程的執行不會工作
ALTER PROCEDURE [sp_SalerTickets_AddByTemp]
@Filter varchar(8000),
@UserID int
AS
if (len(@Filter) = 0)
return
declare @ID varchar(10)
set @ID = convert(varchar(10), @UserID)
exec('insert into T_ActionTicketSale(ActionTicketID, UserID)
select ID, ' + @ID + '
from V_ActionTickets
where ID in (select TicketID
from T_TmpProcessTicketAction
where ' + @Filter + ')')
的@Filter
來自C#代碼,看起來像這樣:
string filter = string.Format("SessionID='{0}'", sessionId);
string sql = String.Format("exec sp_SalerTickets_AddByTemp @Filter='{0}', @UserID={1}", filter, salerID);
但這個工程:
insert into T_ActionTicketSale(ActionTicketID, UserID)
select ID, 2950
from V_ActionTickets
where ID in (select TicketID from T_TmpProcessTicketAction where SessionID = 'test')
我不知道這是怎麼回事在這裏,因爲我需要高管來工作。
備註:您應該**不要**爲存儲過程使用'sp_'前綴。微軟已經保留了這個前綴以供自己使用(參見*命名存儲過程*)](http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx),以及你將來有可能冒着名字衝突的風險。 [這對你的存儲過程性能也是不利的](http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix)。最好只是簡單地避免使用'sp_'並將其他內容用作前綴 - 或者根本沒有前綴! –
謝謝你的建議,但這是功能問題。 – tesicg