2010-12-09 40 views
2

Voici le sproc:Comment utiliser la sortie Varchar (max) d'une procédure stockée SQL Server 2008 dans une ancienne application ASP/VBScript?

ALTER PROC [dbo].[cms_createNoteMultipleRecID] (
    @NoteDt smalldatetime, 
    ... 
    @NoteIDCSV VARCHAR(max) OUTPUT 
) 

Et voici le VBScript:

cmd.CommandText = "cms_createNoteMultipleRecID" 
cmd.Parameters.Append = cmd.CreateParameter("@RC", adInteger, adParamReturnValue) 
cmd.Parameters.Append = cmd.CreateParameter("@NoteDt", adDBDate, adParamInput,, NoteDt) 
... 
cmd.Parameters.Append = cmd.CreateParameter("@NoteIDCSV", adLongVarWChar, adParamOutput) 

On dirait que adLongVarWChar fonctionne pour l'entrée, comme je l'ai utilisé plusieurs fois. Mais, quelle est la bonne façon d'utiliser une sortie varchar (max) dans VBScript? En l'état, mon erreur indique: "L'objet du paramètre est mal défini, des informations incohérentes ou incomplètes ont été fournies." de l'ADODB.

+0

Vous devez corriger ce problème, modifiez le type de données du paramètre @NoteDt à adDBTimeStamp. – Artemination

Répondre

3

Cela fonctionne:

cmd.Parameters.Append = cmd.CreateParameter("@NoteIDCSV", adBStr, adParamOutput, -1) 

Ouvert à de meilleures idées. SQL Server ne prend pas en charge le type de données adDBDate.

2

Définissez l'argument size sur CreateParameter à -1. Je pense que c'est la syntaxe (ne peut pas tester pour le moment):

cmd.Parameters.Append = cmd.CreateParameter("@NoteIDCSV", adLongVarWChar, adParamOutput, -1)