Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
向sql server中的存储过程传递参数_Sql - Fatal编程技术网

向sql server中的存储过程传递参数

向sql server中的存储过程传递参数,sql,Sql,我有一个delete SP,它对多个表执行操作,并接受3个参数。我有一个包含100条记录的表,其中包含SP所需的3个参数 我试图找出一种方法,为表中的每一行调用SP并触发SP 例如:考虑sp:upFuffeldLe删除。表单的数据存储在多个表中,并采用参数form\u id、account\u id和created\u date。我有一个带有这些参数的临时表。我需要为临时表中存在的所有记录执行up\u form\u delete“form\u id”、“account\u id”、“create

我有一个delete SP,它对多个表执行操作,并接受3个参数。我有一个包含100条记录的表,其中包含SP所需的3个参数

我试图找出一种方法,为表中的每一行调用SP并触发SP

例如:考虑sp:upFuffeldLe删除。表单的数据存储在多个表中,并采用参数form\u id、account\u id和created\u date。我有一个带有这些参数的临时表。我需要为临时表中存在的所有记录执行up\u form\u delete“form\u id”、“account\u id”、“created\u date”


关于如何做到这一点有什么想法吗

您可以使用游标遍历所有行,并且对于每一行,您可以调用存储过程

以下是MSDN博客中的一个示例:


用光标。其语法将取决于您使用的数据库服务器软件
SET NOCOUNT ON;

DECLARE @vendor_id int, @vendor_name nvarchar(50),
    @message varchar(80), @product nvarchar(50);

PRINT '-------- Vendor Products Report --------';

DECLARE vendor_cursor CURSOR FOR 
SELECT VendorID, Name
FROM Purchasing.Vendor
WHERE PreferredVendorStatus = 1
ORDER BY VendorID;

OPEN vendor_cursor

FETCH NEXT FROM vendor_cursor 
INTO @vendor_id, @vendor_name

WHILE @@FETCH_STATUS = 0
BEGIN
    PRINT ' '
    SELECT @message = '----- Products From Vendor: ' + 
        @vendor_name

    PRINT @message

    -- Declare an inner cursor based   
    -- on vendor_id from the outer cursor.

    DECLARE product_cursor CURSOR FOR 
    SELECT v.Name
    FROM Purchasing.ProductVendor pv, Production.Product v
    WHERE pv.ProductID = v.ProductID AND
    pv.VendorID = @vendor_id  -- Variable value from the outer cursor

    OPEN product_cursor
    FETCH NEXT FROM product_cursor INTO @product

    IF @@FETCH_STATUS <> 0 
        PRINT '         <<None>>'     

    WHILE @@FETCH_STATUS = 0
    BEGIN

        SELECT @message = '         ' + @product
        PRINT @message
        FETCH NEXT FROM product_cursor INTO @product
        END

    CLOSE product_cursor
    DEALLOCATE product_cursor
        -- Get the next vendor.
    FETCH NEXT FROM vendor_cursor 
    INTO @vendor_id, @vendor_name
END 
CLOSE vendor_cursor;
DEALLOCATE vendor_cursor;