Как передать массив в SQL Server с помощью переполнения стека

Добрый день,

Если у меня есть следующий код в SQL Server:

CREATE TYPE PartList
AS TABLE
(
PartID varchar(30),
Quantity int
);
GO

CREATE PROC spInsertPartList
@List AS PartList READONLY
AS
BEGIN
SET NOCOUNT ON;

INSERT INTO Part (PartID, Quantity)
VALUES (SELECT PartID, Quantity FROM @List)

END
GO

Могу ли я теперь вызвать эту процедуру из PHP, заявив что-то вроде следующего:

$array = array('PartNr123' => 50, 'PartNr25' => 4);
$stmt = mssql_init('spInsertPartList');
mssql_bind($stmt,'@List', &$array, PartList, false,  false);
mssql_execute($stmt);

Я нашел код для операторов SQL Вот, но, к сожалению, пример кода работает с C # DataTable.

РЕДАКТИРОВАТЬ:

Кроме того, я получаю следующие ошибки при выполнении сценария SQL:

Msg 2715, Level 16, State 3, Procedure InsertStockTake, Line 194
Column, parameter, or variable #1: Cannot find data type dbo.CallPartList

А также это:

Msg 1087, Level 16, State 1, Procedure InsertStockTake, Line 200
Must declare the table variable "@partList".

Что вызвано следующим кодом:

CREATE PROC dbo.InsertStockTake
@partList AS dbo.CallPartList READONLY
AS
BEGIN
BEGIN TRY
BEGIN TRANSACTION
DECLARE @partNr varchar(15), @qtyCount smallint, @qtyDB smallint
DECLARE curStock CURSOR FOR (SELECT PartNr, Qty FROM @partList)
OPEN curStock
FETCH NEXT FROM curCallPart INTO @partNr, @qtyCount
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @qtyDB = StockOH FROM dbo.Stock WHERE PartNr =
@partNr
INSERT INTO scArchive.StockLevel(PartNr,
StockOHDatabase, StockOHCounted, DateCaptured)
VALUES (@partNr, @qtyDB, @qtyCount, GETDATE())
FETCH NEXT FROM curCallPart INTO @partNr, @qtyCount
END
CLOSE curStock
DEALLOCATE curStock
COMMIT
END TRY
BEGIN CATCH
THROW;
ROLLBACK
END CATCH
END
GO

заранее спасибо

0

Решение

Нет необходимости для этого вопроса больше. Я использовал mysqli_ * в php, изменил структуру таблицы и перешел на MySQL, а не на MS SQL

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]