Работа со строками в Oracle (PL/SQL)
Осваиваем Oracle и PL/SQLОсновные способы обработки строковых значений в Oracle.
В этой публикации я приведу основные функции работы со строками которые встречались мне в работе, и будут полезны всем кто работает с Oracle.
CONCAT — Объединяет две строки
SQL> select concat('Пётр ','первый') from dual;
CONCAT('ПЁТР','ПЕРВЫЙ')
-----------------------
Пётр первый
Читаль далее...
Передача параметров между формами в C#
Язык программирования C#Часто возникает необходимость передать определённые параметры между формами в одном приложении, например значения каких либо переменных, или запустить какую либо процедуру или функцию в другой форме. Здесь я расскажу о двух методах решения этой задачи. Описанные методы использую сам, поэтому и публикую. Первый метод попроще, второй посложнее но более универсальный и с большими возможностями.
Работа с FTP сервером из C#
Язык программирования C#Наверное многие сталкивались с необходимостью создать простой FTP клиент для своих нужд на C#. Вот и меня не миновало. Недавно пришлось делать специфическое приложение для обновления ПО через FTP. И самым полезным что я нашёл для этой цели оказался набор библиотечек (кстати с исходниками) BytesRoad.NetSuit. Очень простой компонент предоставляющий весь основной функционал для работы с FTP.
В коплекте 3 библиотеки:
BytesRoad.Diag.dll
BytesRoad.Net.Ftp.dll
BytesRoad.Net.Sockets.dll
Добавляем в наш проект как References вот эти две библиотеки:
BytesRoad.Net.Ftp.dll
BytesRoad.Net.Sockets.dll
Далее о том как работать с компонентом…
Читаль далее...
Свой сервер и клиент к нему при помощи TcpListener и TcpClient
Язык программирования C#Не так давно, наткнулся на одну статейку на Хабре, по поводу TcpListener — там с его помощью делался Web-сервер. Поскольку есть некоторые задачи требующие создания подобного приложения, было решено изучить вопрос и попробовать воссоздать увиденное. Переписал что было в публикации в приложение (всегда так делаю прежде чем скачать исходник — лучше для понимания) запустил, не работает. Точнее работает но через раз — как то кривенько и для реально рабочего приложения не годится. Скачал исходники — тоже самое, работает но через раз. Здесь работает через раз — означает что клиент то цеплялся то не цеплялся к серверу. Решил изучить вопрос с ноля. Накопал некоторый материал в интернете, всё это переработал — получилось тестовое рабочее приложение.
Начну с того, что я хотел сделать: пример состоит из двух приложений — сервера и клиента. (Мне Web-сервер не особо интересен, хотя пример можно достаточно просто переделать в него.)
Сервер — принимает данные от клиента (текст), преобразует строку полученную от клиента к заглавным буквам и отправляет обратно клиенту.
Клиент — отправляет n-ное количество раз заданную строку клиенту (сделано чтобы поназапускав несколько клиентов, в том числе с разных машин, посмотреть как будет себя вести сервер) прибавляя порядковый номерок к посланному тексту и получает такое же количество раз ответ от сервера с текстом заглавными буквами.
Дополнительно — вначале пример был без использования ThreadPool, но потом решил добавить, так сервер должен работать стабильнее (по моему мнению) и обрабатывать большее количество одновременных запросов.
Поскольку код я прокомментировал довольно хорошо, то привожу как есть, без дополнительного описания.
Как отлавливать ошибки в Oracle (PLSQL) EXCEPTION,SQLERRM,SQLCODE
Осваиваем Oracle и PL/SQLМаленькое руководство по отлавливанию ошибок в Oracle PLSQL.
Описание как использовать в Oracle (PLSQL) функции SQLERRM и SQLCODE для отлова ошибок EXCEPTION, с описанием синтаксиса и примером.
Функция SQLERRM возвращает сообщение об ошибке связанное с последним возникшим исключением (ошибкой).
Функция SQLERRM — не имеет параметров.
Функция SQLCODE возвращает код ошибки связанный с последним возникшим исключением (ошибкой)
Функция SQLERRM — не имеет параметров.
Обычно обработка исключений EXCEPTION выглядит следующим образом:
EXCEPTION
WHEN наименование_ошибки_1 THEN
[statements]
WHEN наименование_ошибки_2 THEN
[statements]
WHEN наименование_ошибки_N THEN
[statements]
WHEN OTHERS THEN
[statements]
END [наименование_процедуры];
Вы можете использовать функции SQLERRM и SQLCODE для вызова сообщения об ошибке например таким образом:
EXCEPTION
WHEN OTHERS THEN
raise_application_error(-20001,'Произошла ошибка - '||SQLCODE||' -ERROR- '||SQLERRM);
END;
-- В данном случае появится всплывающее сообщение.
Читаль далее...
Oracle PLSQL SQL EXCEPTION SQLERRM SQLCODE ошибки программирование
Программируем лазерный считыватель на терминалах сбора данных Motorola (Symbol)
Разработка на .NET CFДавно хотел написать такое руководство к действию, но как-то всё руки не доходили, и вот наконец написал, всего делов то было…
Любители впихнуть везде и всюду 1С-ку (даже на терминал) с использованием DataWedge (это такая утилита для отправки того что считал сканер в буфер клавиатуры только специализированная для ТСД Symbol) могут дальше не читать, а заниматься и дальше тем что больше нравится. Обращать в свою веру никого не буду :).
Итак, что же я здесь продемонстрирую?.. Я приведу маленький пример того, как задействовать считывающее устройство на терминале сбора данных (Symbol Motorola) из вашего приложения, расскажу что для этого необходимо и приведу пример кода.
Symbol Motorola Сканер ШК программирование программирование терминала Symbol
Oracle - Функции RANK() и DENSE_RANK() (Или учимся выбирать необходимые значения внутри множественной выборки)
Осваиваем Oracle и PL/SQLНачнем с функции RANK(). С объяснения для чего она и в каких случаях она нам может пригодиться.
Функция RANK() — это очень полезная функция, она позволяет нам пронумеровать набор по некоторому группирующему значению внутри всего выбранного набора данных. Проще всего показать это на примере. Для этого создадим небольшую таблицу:
ID PERSON DT SM
1 Роман 01.10.2016 11:51:31 545.3
2 Роман 01.10.2016 11:51:31 445.2
3 Роман 01.10.2016 11:51:31 145.3
4 Кирил 01.05.2016 16:51:31 99.5
5 Алена 01.07.2016 12:51:31 445.3
6 Роман 01.12.2016 16:51:31 876.1
7 Кирил 01.06.2016 16:51:31 237.22
8 Алена 01.12.2016 16:51:31 145.3
9 Алена 01.02.2016 14:51:31 534.7
10 Роман 01.03.2016 16:51:31 165.3
11 Кирил 01.04.2016 16:51:31 345.2
Пусть в этой таблице будет содержать некоторые выставленные счета разным пользователям PERSON на разные суммы SM в разное время DT.
Читаль далее...
Oracle RANK() DENSE_RANK() группировка выбор первых PL/SQL программирование SQL
Oracle - Фичи и полезности (Часть №1)
Осваиваем Oracle и PL/SQLЗдесь буду выкладывать всякие полезные мелочи и запросы, которые могут пригодиться с их описанием.
1. Получаем список всех полей интересующей нас таблицы.
select column_name
from user_tab_columns
where upper(table_name) = upper('название_таблицы')
2. Меняем формат даты по умолчанию в сессии.
alter session set NLS_DATE_FORMAT = 'dd.mm.yyyy hh24:mi:ss';
— Пока сессия не закрыта, будет действовать установленный таким образом формат.Читаль далее...
Oracle PL/SQL sql фичи примеры программирование разработка partition
Удаление временных таблиц в MSSQL
MS SQL - по необходимостиИногда возникает необходимость, в ходе работы процедуры, удалить временно созданную таблицу которая может быть либо создана либо нет, тогда не достаточно просто написать например drop table #myTempTable — потому что в случае если таблицы не существует то запрос не выполнится и выдаст ошибку. Пример ниже показывает как правильно удалять временные таблицы в таком случае:
if exists (
select * from tempdb.dbo.sysobjects o
where o.xtype in ('U')
and o.id = object_id(N'tempdb..#myTempTable')
)
BEGIN
DROP TABLE #myTempTable;
END
Комментировать...
Пример POST запроса через WebRequest
Язык программирования C#Пример POST запроса к сервису с использованием WebRequest на C#:
using System;
using System.Net;
using System.IO;
namespace Tester
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("RUN Tests for Service:");
//Выполняем тестовый POST запрос к службе.
SendTestPostRequest(@"URL - сервиса", "Текст запроса");
Console.WriteLine("Press any key for exit...");
Console.ReadKey();
}
//Метод выполяющий запрос по указанному адресу и получающий ответ.
static void SendTestPostRequest(string url, string data)
{
try
{
WebRequest request = WebRequest.Create(url);
request.Method = "POST";
string postData = data;
request.ContentType = "application/x-www-form-urlencoded";
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
byte[] postByteArray = encoding.GetBytes(postData);
request.ContentLength = postByteArray.Length;
System.IO.Stream postStream = request.GetRequestStream();
postStream.Write(postByteArray, 0, postByteArray.Length);
postStream.Close();
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
Console.WriteLine("Response Status Description: " + response.StatusDescription);
Stream dataSteam = response.GetResponseStream();
StreamReader reader = new StreamReader(dataSteam);
string responseFromServer = reader.ReadToEnd();
Console.WriteLine("Response: " + responseFromServer);
reader.Close();
dataSteam.Close();
response.Close();
}
catch(Exception ex)
{
//Если что-то пошло не так, выводим ошибочку о том, что же пошло не так.
Console.WriteLine("ERROR: "+ex.Message);
}
}
}
}
Комментировать...