В БД (MSSQL 2000 SP3a, ADO 2.8) есть процедура PROCNAME, в конце которой выполняется SELECT, в VB пишу:
- Код: Выделить всё
Set rst = New ADODB.Recordset
rst.Open "exec PROCNAME", cnn
MsgBox rst.Fields(0).Value
Так вот, опытным путем установлено, что если в процедуре встретится слово SELECT, но не то, которое возвращает данные, например:
- Код: Выделить всё
CREATE PROCEDURE PROCNAME AS
CREATE TABLE #qqq(id INT)
INSERT INTO #qqq SELECT 1
SELECT id FROM #qqq
GO
на MsgBox получим ругань: Run-time Error '3704': Operation is not allowed when the object is closed, без каких-либо ошибок при вызове rst.Open.
Однако, если слов SELECT до возврата данных не встретится:
- Код: Выделить всё
CREATE PROCEDURE PROCNAME AS
CREATE TABLE #qqq(id INT)
INSERT INTO #qqq VALUES (1)
SELECT id FROM #qqq
GO
то единица возвратится и MsgBox ее успешно покажет.
Я уж и так, и сяк с этим...