我願做這樣的事情在SQLSQL INSERT INTO調用存儲過程,而不是
插入進storedproc2 SELECT列1,列2,從表名
我的目標是有處理的表名數據的每一行使用storedproc2存儲過程,它本身處理邏輯流程中所需的任何插入操作。
我願做這樣的事情在SQLSQL INSERT INTO調用存儲過程,而不是
插入進storedproc2 SELECT列1,列2,從表名
我的目標是有處理的表名數據的每一行使用storedproc2存儲過程,它本身處理邏輯流程中所需的任何插入操作。
您無法插入存儲過程。您只能插入表(在某些情況下視圖,這取決於數據庫平臺上,是否視圖是可更新的。)
您可以使用存儲過程來插入數據,如下所示:http://www.codeproject.com/KB/cs/tariqaziz.aspx
這並不意味着是侮辱,而是樂於助人......
這聽起來像你需要去存儲過程讀了,因爲你的問題表明你沒有得到的基本知識。
http://databases.about.com/od/sqlserver/a/storedprocedure.htm
正如大衛說,你不能這樣做你想要的方式。
你可以做的是將存儲過程的表作爲參數提供給表,並讓它在表中的每一行上執行它的邏輯。它將涉及一些動態SQL,但它是可行的。
您可以將插入語句放入存儲過程中,並將值作爲參數傳遞,例如
以下僅僅是一個例子,在每一行,你可以打電話給你的存儲過程,它應該是罰款
CREATE PROC BDD_AddMessageLogItem(
@BusinessDevelopmentItemId INT,
@MessageLog NVARCHAR(MAX),
@PostedBy SMALLINT,
@PostedOfficeId TINYINT,
@PostedDepartmentId TINYINT,
@PostedMessageLogType TINYINT)
AS
BEGIN
DECLARE @BusinessDevelopmentMessageLogId SMALLINT
INSERT INTO dbo.BusinessDevelopmentItemMessageLogs
(BusinessDevelopmentItemId ,
MessageLog ,
DatePosted,
PostedBy,
PostedOfficeId,
PostedDepartmentId,
PostedMessageLogType,
BusinessDevelopmentMessageLogId
)
VALUES (@BusinessDevelopmentItemId , -- BusinessDevelopmentItemId - int
@MessageLog , -- Message - nvarchar(100)
GETDATE(),
@PostedBy,
@PostedOfficeId,
@PostedDepartmentId,
@PostedMessageLogType,
@BusinessDevelopmentMessageLogId
)
END
你不可錯過的數據集存儲過程,只有參數。您可以:
然後用sp_executesql
執行它。如果你使用這種方法,你應該閱讀The Curse and Blessings of Dynamic SQL。
就像其他人說的那樣,你不能在一個聲明中這樣做。 (這是事情的工作方式)
如果你想要調用一個proc的結果,你可以先選擇,然後使用遊標調用proc。 遊標將按行代碼執行一行,您將能夠調用傳遞正確值的proc。但要小心使用緩慢的標誌,如FAST_FORWARD。
另一種方法是將您的proc更改爲接受整個表,作爲表值參數,如果這是可能的,那將表現得更好。
希望這會有所幫助。
DECLARE CallingProcCursor CURSOR
FAST_FORWARD
FOR
SELECT database_id,name from sys.databases
DECLARE @database_id int, @name sysname
OPEN CallingProcCursor
FETCH NEXT FROM CallingProcCursor INTO @database_id, @name
WHILE (@@fetch_status <> -1)
BEGIN
IF (@@fetch_status <> -2)
BEGIN
EXEC PROCX @database_id, @name
END
FETCH NEXT FROM CallingProcCursor INTO @database_id, @name
END
CLOSE CallingProcCursor
DEALLOCATE CallingProcCursor
GO
使用光標+1 – garik 2010-11-09 16:32:01
已在此處發佈的答案幫助到了您?如果此處提供的答案已回答您的問題,請將其標記爲已回答。 – 2010-11-09 18:10:14