Я пытаюсь использовать хранимую процедуру для отображения результатов таблицы и связанной с ней таблицы или последних изменений в базе данных. Хранимая процедура:
set ANSI_NULLS ON
set NOCOUNT ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[MKTG_Current]( @added smalldatetime OUTPUT, @named varchar(50) OUTPUT)
AS
DECLARE @pDate smalldatetime;
DECLARE @AIID int;
DECLARE @Table varchar(50);
DECLARE @Bork nvarchar(350);
SET @pDate = GETDATE()
SELECT @Table=[Table], @AIID=AIID, @added=date_added FROM MKTG_Recent WHERE date_added > DATEDIFF(day, date_added, DATEADD(DD, 30, @pDate))
SET @named = @Table
SET @Bork = 'SELECT * FROM ' + QUOTENAME(@Table) + ' WHERE AIID= ' + cast(@AIID as varchar(100))
EXECUTE sp_executesql @Bork, @added OUTPUT, @named OUTPUT
SELECT @added, @named
Она должна возвращать элементы в дополнение к результатам оператора select. В хранимую процедуру нет входных данных. Хранимая процедура прекрасно компилируется в SQL Management Studio (2008), но страница возвращает ошибку: Ошибка поставщика Microsoft OLE DB для SQL Server «80040e14»
. Процедура ожидает параметр «@parameters» типа «ntext / nchar / nvarchar». index.asp, строка 61
Строка 61 страницы выделена жирным шрифтом:
dim Objrs, cmd
set Objrs = Server.CreateObject("ADODB.RecordSet")
set cmd = Server.CreateObject("ADODB.Command")
set conn = Server.CreateObject("ADODB.Connection")
conn.Open strConnect
set cmd.ActiveConnection = conn
cmd.CommandText="MKTG_Current"
cmd.CommandType=adCmdStoredProc
cmd.Parameters.Append cmd.CreateParameter("@added", 135, 2)
cmd.Parameters.Append cmd.CreateParameter("@named", 200, 2, 50)
Line 61 **set Objrs = cmd.Execute**
name_of_table = cmd.Parameters("@named")
added = cmd.Parameters("@added")
У меня сложилось впечатление, что это вызвано ошибкой кода SQL, но я ее не вижу. Быстрая проверка Objrs.state возвращает 0, что означает, что проблема определенно заключается в коде SQL. Да хоть убей, я не могу определить, почему возникает эта ошибка.