2011-11-17 5 views
0

J'utilise JTDS avec Java pour me connecter à une base de données Microsoft SQL. Je suis capable de me connecter à la base de données parfaitement. Cependant, lorsque j'exécute le code ci-dessous, j'obtiens une erreur "Impossible de trouver la procédure stockée 'get_queue_items'". J'ai essayé de préfixer 'dbo'. au nom de la procédure stockée, mais je continue d'obtenir l'erreur. J'ai également inclus la procédure stockée réelle pour référence.JTDS (Java/MSSQL) - Impossible de trouver la procédure stockée

try { 
    // Prepare and call the stored procedure 
    CallableStatement proc = connection.prepareCall("{call get_queue_items(?) }"); 

    // Register the ResultSet 
    proc.registerOutParameter(1, java.sql.Types.INTEGER); 

    // Register Input Parameters 
    proc.setInt("@last_queue_entry", 1); 

    // Execute the stored procedure 
    proc.execute(); 

    // If we have a ResultSet 
    if (proc.getMoreResults()) { 
     ResultSet rs = proc.getResultSet(); 
     if (rs.next()) { 
      // to complete... 
     } 
    } 
} 
catch(Exception ex) 
{ 
    System.out.println("Error: " + ex.getMessage()); 
} 

Et la procédure stockée:

USE [test] 
GO 
/****** Object: StoredProcedure [dbo].[get_queue_items] Script Date: 11/17/2011 11:43:54 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER procedure [dbo].[get_queue_items] @qid int OUT, @last_queue_entry int as 
-- select all the new records out of the main table into a temp table 
-- the temp table is what we will use to process 

select @qid = qid from test.[dbo].que_items 
where qid > @last_queue_entry 

Je suis nouveau à JTDS et Java, il est donc probable que je suis en faute, mais toute aide serait appréciée.

Edit: Modification de la procédure stockée selon les conseils de Cristian, obtenant toujours la même erreur « Impossible de trouver la procédure stockée « get_queue_items »

Edit 2: ne fonctionne toujours pas - la connectivité de base de données semble bien aussi.

Répondre

2

J'ai rencontré aujourd'hui même problème et il me semble qu'il ya un bogue dans la mise en œuvre de jTDS. Pour moi, la solution était de renommer la procédure et de supprimer tous les symboles de soulignement (c'est-à-dire getQueueItems(?) dans votre cas). Essayez, je pense que cela doit vous aider.

0

vous devez spécifier les paramètres de sortie, certains paramètres ne peuvent pas être spécifiés comme: text, ntext et image.

ALTER procedure [dbo].[get_queue_items] @id int OUT, @last_queue_entry int as 
-- select all the new records out of the main table into a temp table 
-- the temp table is what we will use to process 

select @id = id from test.[dbo].que_items 
where qid > @last_queue_entry 

cette prodecure retournera seulement des numéros d'identification

+0

J'ai modifié la procédure exactement comme ci-dessus, et toujours obtenir la même erreur. – MichaelICE

+0

** La connexion ** est connectée à la base de données [Test]? –

+0

Si je modifie la ligne de ce CallableStatement proc = connection.prepareCall ("{call [test]. [Dbo]. [Get_queue_items] (1)}"); et supprimer les paramètres donne une erreur Erreur: La procédure ou la fonction 'get_queue_items' attend le paramètre '@last_queue_entry', qui n'a pas été fourni. – MichaelICE

Questions connexes