powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Процедура разбивки строки на слова для sql server
1 сообщений из 1, страница 1 из 1
Процедура разбивки строки на слова для sql server
    #34854139
iogun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
помогите написать процедуру у которой вх. параметры - адрес массива, строка для разбивки, разделитель, а вых. параметр - табличка с полученными словами.
Допустим вот процедура которая выводит массив, помогить ее модифицировать, мои познания в с++ оставляют желать лучшего
Код: plaintext
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.
RETCODE __declspec(dllexport) xp_listarray(SRV_PROC *srvproc)
{
    int         nParams;
	int			index;
	int			handle;
	int			size;
	int			len;

	char* emptystr = "";

	PBYTE*      array       = NULL;
	PBYTE*      ppData		= NULL;

	BYTE  pbType;
	ULONG  pcbMaxLen;
	ULONG  pcbActualLen;
	BOOL  pfNull;

    nParams = srv_rpcparams(srvproc);   

    // Check number of parameters
    if (nParams !=  1 ) {
	    // Send error message and return
        srv_sendmsg(srvproc, SRV_MSG_ERROR, XP_ARRAY_ERROR, SRV_INFO, (DBTINYINT) 0 ,
            NULL,  0 ,  0 , "Error executing extended stored procedure: Invalid number of parameters",
            SRV_NULLTERM);

        // A SRV_DONE_MORE instead of a SRV_DONE_FINAL must complete the
        // result set of an Extended Stored Procedure.
        srv_senddone(srvproc, (SRV_DONE_ERROR | SRV_DONE_MORE),  0 ,  0 );
        return(XP_ERROR);
    }
    if (!IntParam( 1 )) {
        srv_sendmsg(srvproc, SRV_MSG_ERROR, XP_ARRAY_ERROR, SRV_INFO, (DBTINYINT) 0 ,
            NULL,  0 ,  0 ,
            "Error executing extended stored procedure: Invalid Parameter Type",
            SRV_NULLTERM);

        // A SRV_DONE_MORE instead of a SRV_DONE_FINAL must complete the
        // result set of an Extended Stored Procedure.
        srv_senddone(srvproc, (SRV_DONE_ERROR | SRV_DONE_MORE),  0 ,  0 );
        return(XP_ERROR);
    }

	srv_paraminfo(srvproc, 1 ,&pbType, &pcbMaxLen, &pcbActualLen, (BYTE *)&handle, &pfNull);

	array=(PBYTE *)handle;
	size=getarraysize(array);
	len =  255 ;

    for (index =  1 ; index < size; index++)
	{
		srv_describe(srvproc, 
			 1 , 
			"idx", 
			SRV_NULLTERM,
			SRVINT4,               // Dest data type.
			(DBINT) sizeof(SRVINT4),      // Dest data length.
			SRVINT4,               // Source data type.
			(DBINT) sizeof(SRVINT4),      // Source data length.
			(PBYTE) &index);

		srv_describe(srvproc, 
			 2 , 
			"value", 
			SRV_NULLTERM,
			SRVVARCHAR,               // Dest data type.
			(DBINT) len,      // Dest data length.
			SRVVARCHAR,               // Source data type.
			(DBINT) len,      // Source data length.
			(PBYTE) NULL);

//			srv_setcollen(srvproc, 1,index);
		if (array[index]!=NULL) srv_setcoldata(srvproc,  2 , array[index]);
		else srv_setcoldata(srvproc,  2 , emptystr);
		if (srv_sendrow(srvproc) != SUCCEED) goto safeexit;
	}
safeexit:
    if (index >  0 )
		srv_senddone(srvproc, SRV_DONE_MORE | SRV_DONE_COUNT, (DBUSMALLINT) 0 , index);
	else
		srv_senddone(srvproc, SRV_DONE_MORE, (DBUSMALLINT) 0 , (DBINT) 0 );

	return XP_NOERROR ;
}
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Процедура разбивки строки на слова для sql server
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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