powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / jdbc + call MS SQL SP ошибка Инструкция не вернула результирующий набор
9 сообщений из 9, страница 1 из 1
jdbc + call MS SQL SP ошибка Инструкция не вернула результирующий набор
    #38190133
Фотография VladislavVV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
привет
есть простая StoredProc MS SQL2005
возвращает список сотрудников в зависимости от @ViewFlag
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
CREATE PROCEDURE [dbo].[up_OK_BRO_S_TrudSpisok]
                                        @Help  char(2)=null,
                                        @Debug char(3)='OFF',

                                        @ViewFlag int
AS
BEGIN
 
 SET NOCOUNT ON
 
 IF @Help IS NULL GOTO Help
 IF @Debug='ON' PRINT 'Dedug=ON'
 
 IF @ViewFlag=2
 BEGIN
 SELECT A.[IDTrud], A.[TabNo],
        RTRIM(A.[Fam]) AS [Fam], RTRIM(A.[Name]) AS [Name],  RTRIM(A.[Otch]) AS [Otch],
        A.[WorkStatus],
        CASE A.[WorkStatus]
         WHEN 0 THEN ''
         WHEN 1 THEN 'ó'
         WHEN 2 THEN '?'
        END AS [WStatusSTR],
        G.[NameDol], R.[NameRazr],
        CONVERT(CHAR(10), A.[DateIn], 103) AS [DateInSTR],
        CASE A.[WorkStatus]
         WHEN 0 THEN ''
         WHEN 1 THEN CONVERT(CHAR(10), A.[DateOut], 103)
         WHEN 2 THEN ''
        END AS [DateOutSTR]

 FROM [dbo].[OK_WTB_Trud] AS A
      LEFT OUTER JOIN [dbo].[SR_ALL_Dolzh] AS G
      ON A.[IDDolzh]=G.[IDDolzh]
      LEFT OUTER JOIN [dbo].[SR_ALL_Razr] AS  R
      ON A.[IDRazr]=R.[IDRazr]

 ORDER BY A.[Fam] ASC,
          A.[Name] ASC,
           A.[Otch] ASC

 END--@ViewFlag=1
 

 IF @ViewFlag IN (0,1)
 BEGIN
 SELECT A.[IDTrud], A.[TabNo],
        RTRIM(A.[Fam]) AS [Fam], RTRIM(A.[Name]) AS [Name],  RTRIM(A.[Otch]) AS [Otch],
        A.[WorkStatus],
        CASE A.[WorkStatus]
         WHEN 0 THEN ''
         WHEN 1 THEN 'ó'
         WHEN 2 THEN '?'
        END AS WStatusSTR,
        G.[NameDol], R.[NameRazr],
        CONVERT(CHAR(10), A.[DateIn], 103) AS [DateInSTR],
        CASE A.[WorkStatus]
         WHEN 0 THEN ''
         WHEN 1 THEN CONVERT(CHAR(10), A.[DateOut], 103)
         WHEN 2 THEN ''
        END AS [DateOutSTR]

 FROM [dbo].[OK_WTB_Trud] AS A
      LEFT OUTER JOIN [dbo].[SR_ALL_Dolzh] AS G
      ON A.[IDDolzh]=G.[IDDolzh]
      LEFT OUTER JOIN [dbo].[SR_ALL_Razr] AS  R
      ON A.[IDRazr]=R.[IDRazr]

 WHERE A.[WorkStatus]=@ViewFlag
 
 ORDER BY A.[Fam] ASC,
          A.[Name] ASC,
           A.[Otch] ASC

 END--@ViewFlag=in
 GOTO EndProc

Help:
 PRINT '--------------------------------------------------------------------------------'
 PRINT 'Description  :        '
 PRINT '--------------------------------------------------------------------------------'
 RETURN -1

EndProc:
END



вызываю хранимку из класса

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
public class GetListTrud
{           
    private CallableStatement сst;
    private ResultSet rs;
    private Boolean fillDataResult;
    private String fillDataStr;
    
    //constructors
    public GetListTrud()
      {                
        сst=null;
        rs=null;
        fillDataResult=false;
        fillDataStr   ="";       
      }

    
    //methods, etc       
    
         
    //заполняем данными список    
    public void FillData(Connection con, String DBName, Integer viewflag)           
      {
       if (con==null) {return;};
       
       if (viewflag<0 | viewflag>2 | DBName.length()==0) 
       {
           this.fillDataResult=false;
           this.fillDataStr="Неверные параметры для выполнения SP.";
           return;
       }                           
       try
          {
              this.fillDataResult=true;           
              сst=con.prepareCall("{call [dbo].[up_OK_BRO_S_TrudSpisok](?,?,?)}");
              сst.setString(1, "NH");
              сst.setString(2, "OFF");
              сst.setInt(3, viewflag);
       
              rs=сst.executeQuery();                            
              
          } catch (Exception e)
          {
           this.fillDataResult=false;
           this.fillDataStr="Невозможно выполнить SP:"+"<br>"+e.getMessage();
          }
      }//filldata
                 
    
  }



получаю результат
Код: java
1.
2.
Невозможно выполнить SP:
Инструкция не вернула результирующий набор. 



подскажите, что не так
спс

ps само собой, что данные есть в таблицах, права на запуск есть, коннект к базе есть
...
Рейтинг: 0 / 0
jdbc + call MS SQL SP ошибка Инструкция не вернула результирующий набор
    #38190226
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SET NOCOUNT OFF забыл,ИМХО.
...
Рейтинг: 0 / 0
jdbc + call MS SQL SP ошибка Инструкция не вернула результирующий набор
    #38190273
Фотография VladislavVV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Troglodit, не помогает

с синтаксисом и логикой джава класса у меня все ок?
я новичек в этом вопросе
...
Рейтинг: 0 / 0
jdbc + call MS SQL SP ошибка Инструкция не вернула результирующий набор
    #38190297
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladislavVVTroglodit, не помогает

с синтаксисом и логикой джава класса у меня все ок?
я новичек в этом вопросе
ну если ХП можешь править, напиши там
select from 1
и проверяй
...
Рейтинг: 0 / 0
jdbc + call MS SQL SP ошибка Инструкция не вернула результирующий набор
    #38190302
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если используется NOCOUNT, ее надо отключать до результирующего запроса. Я на 90 % уверен , что дело в этом.
...
Рейтинг: 0 / 0
jdbc + call MS SQL SP ошибка Инструкция не вернула результирующий набор
    #38190315
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Troglodit,
ON вроде и отключает
...
Рейтинг: 0 / 0
jdbc + call MS SQL SP ошибка Инструкция не вернула результирующий набор
    #38190538
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
Он включает NOCOUNT,т.е. количество записей неизвестно.
Обычно это идет в паре:

SET NOCOUNT ON
код
SET NOCOUNT OFF
select ...
...
Рейтинг: 0 / 0
jdbc + call MS SQL SP ошибка Инструкция не вернула результирующий набор
    #38191544
Фотография VladislavVV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема решилась. Виноват был я, так как неправильно организовал работу класса GetListTrud.
В остальном-все работает замечательно.
Пользовался этим ресурсом: MSDN:Using Statements with Stored Procedures

рабочий класс
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
import java.sql.*;

public class GetListTrud
 {
    private Connection c;
    private Integer viewflag;
    //private Statement cst;
    private PreparedStatement cst;
    private ResultSet rs;
    private Boolean fillDataResult;
    private String fillDataStr;
    
    //constructors
    public GetListTrud()
      {        
        c=null;
        viewflag=-1;
        cst=null;
        rs=null;
        fillDataResult=false;
        fillDataStr   ="";       
      }

    public GetListTrud(Connection con, Integer viewflag)
      {
        this.c=con;
        this.viewflag=viewflag;
        cst=null;
        rs=null;
        fillDataResult=false;
        fillDataStr   ="";  
      }
    
    //methods, etc       
    public ResultSet getRs()
      {
        return rs;        
      }

    public Boolean getFillDataResult()
      {
        return fillDataResult;
      }

    public String getFillDataStr()
      {
        return fillDataStr;
      }
    
         
    //заполняем данными список    
    public void FillData()  
      {
       if (c==null) 
       {
         this.fillDataResult=false;
         this.fillDataStr="Неверные параметры для выполнения SP. (c=null)";
         return;
       }       
       if (viewflag<0 | viewflag>2) 
       {
         this.fillDataResult=false;
         this.fillDataStr="Неверные параметры для выполнения SP. (viewflag="+viewflag.toString()+")";
         return;
       }                      
       try           
          {
            this.cst = c.prepareStatement("{call [dbo].[up_OK_BRO_S_TrudSpisok](?,?,?)}");
            this.cst.setString(1, "'NH'");
            this.cst.setString(2, "'OFF'");
            this.cst.setInt(3, 0);
            this.rs = cst.executeQuery();              
            this.fillDataResult=true;
             
          } catch (Exception e)
          {
           this.fillDataResult=false;
           this.fillDataStr="Невозможно выполнить SP:"+"<br>"+e.getMessage();          
          }
      }//filldata
          
    
    public void CloseStatement()
      {
        if (this.rs!=null) 
        {
            try
            {
             rs.close();    
            } catch (Exception e)
            {
            }
            
        }
        if (this.cst!=null) 
        {         
            try
            {
              this.cst.close();     
            } catch (Exception e)
            {
            }
        }
      }
    
  }



кстати, SP работает без SET NOCOUNT ON
...
Рейтинг: 0 / 0
jdbc + call MS SQL SP ошибка Инструкция не вернула результирующий набор
    #38191549
Фотография VladislavVV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oops! строку
Код: java
1.
this.cst.setInt(3, 0);


следует заменить на
Код: java
1.
this.cst.setInt(3, this.viewflag);
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / jdbc + call MS SQL SP ошибка Инструкция не вернула результирующий набор
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]