Sql server 列出sql server UDF中以经典asp格式返回表的记录
我编写了第一个sql Server返回表UDF,因为它比使用SP更好 但是,while可以轻松地从sql server检索结果。。我无法从经典的ASP ADO调用它 UDF如下:Sql server 列出sql server UDF中以经典asp格式返回表的记录,sql-server,asp-classic,ado,user-defined-functions,Sql Server,Asp Classic,Ado,User Defined Functions,我编写了第一个sql Server返回表UDF,因为它比使用SP更好 但是,while可以轻松地从sql server检索结果。。我无法从经典的ASP ADO调用它 UDF如下: CREATE FUNCTION dbo.udf_Alert ( @I nvarchar (30), @L nvarchar (10) ) RETURNS TABLE AS RETURN ( SELECT a.Message, a.Height, a.backgroundColor, a.isFree
CREATE FUNCTION dbo.udf_Alert
(
@I nvarchar (30),
@L nvarchar (10)
)
RETURNS TABLE AS RETURN
(
SELECT a.Message, a.Height, a.backgroundColor, a.isFree
from Advice a
join ActiveMessages b on b.MessageID=a.MessageID
join Items i on b.ItemID=i.ItemID
join Sellers s on i.UserID=s.UserID
join Users u on u.UID=s.UID
WHERE
(i.ItemID=@I and a.Active='1' and b.Active='1' and i.active='1' and i.Show='1' and CHARINDEX('ALERT',u.Modules)>0
and a.ValidFrom<GETDATE() and a.ValidTo>GETDATE() and u.PaidUntil>GETDATE() and charindex(@L,a.Languages)>-1 or charindex('all',a.Languages)>-1 )
UNION ALL
SELECT a.Message, a.Height, a.backgroundColor, a.isFree
FROM Advice a, Users u
WHERE u.isFree='1' and a.isFree='1' and (CHARINDEX(@L,a.Languages)>-1 or Charindex('all',a.Languages)>-1)
)
但是我必须嵌入到一个经典的ASP例程中,但我还没有找到方法
尝试了SP方法。。但我在尝试设置参数时出错:
以下是我所尝试的:
sql="Select dbo.udf_Alert('xx','yy')"
dim cmdA
set cmdA = Server.CreateObject("ADODB.Command")
cmdA.ActiveConnection= cn
cmdA.CommandType=4
cmdA.CommandText=sql
cmda.Parameters.Append cmdA.CreateParameter("fd", nvarchar, adParamInput,30, itemID)
cmda.Parameters.Append cmdA.CreateParameter("fde", nvarchar, adParamInput,10, LanguageID)
' cmdA.Parameters("@I")=ItemID '<-----ERRROR HERE
' cmdA.Parameters("@L")=LanguageID
set rs=cmdA.Execute()
你能提出一些建议吗
谢谢
Sergio我们倾向于在一对一的基础上为UDF创建存储过程“包装器”,它可以直接从web代码中调用。例如,这可能看起来像
CREATE PROCEDURE [dbo].[pr_Alert]
@I nvarchar (30),
@L nvarchar (10)
AS
SELECT * FROM testDb.dbo.udf_Alert(@I, @L)
RETURN
然后,您的commandText将只是包装器SP的名称,“pr_Alert”
希望这有帮助。嗨!谢谢。。很管用。。但是。。那么直接编写带有表输出的SP可能会更简单。。。还是最好写UDF+SP?再次感谢。
ADODB.Command error '800a0bb9'
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
CREATE PROCEDURE [dbo].[pr_Alert]
@I nvarchar (30),
@L nvarchar (10)
AS
SELECT * FROM testDb.dbo.udf_Alert(@I, @L)
RETURN