powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Результат сравнения значения столбца в виде boolean + вопрос об UDF на C#
9 сообщений из 9, страница 1 из 1
Результат сравнения значения столбца в виде boolean + вопрос об UDF на C#
    #34895446
Nafigator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Допустим,
SELECT USERTYPE_ID > 0 FROM USERS WHERE LOGINNAME = 'BLABLA'....

И еще, на другую тему: допустим, я в проекте C# использую свою функцию кодирования пароля MD5. Я хочу, чтобы из DB2-шного контрол-центра тоже можно было добавлять записи, кодируя этой функцией. Как я понимаю, нужно засунуть UDF в DB2-шную базу. А кто-то подскажет статью, где приведет пример, как это правильно делается?
...
Рейтинг: 0 / 0
Результат сравнения значения столбца в виде boolean + вопрос об UDF на C#
    #34895696
mustaccio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
SELECT case when USERTYPE_ID >  0  then 'true' else 'false' end FROM USERS WHERE LOGINNAME = 'BLABLA'....

В качестве ответа на второй вопрос могу предложите это:

ftp://ftp.software.ibm.com/ps/products/db2/info/vr9/pdf/letter/en_US/db2a3e90.pdf

Русского перевода, по-моему, не существует.
...
Рейтинг: 0 / 0
Результат сравнения значения столбца в виде boolean + вопрос об UDF на C#
    #34896836
Nafigator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А, чёрт! Я так и делал - просто кавычки не поставил... Спасибо!
И за статью тоже :)
...
Рейтинг: 0 / 0
Результат сравнения значения столбца в виде boolean + вопрос об UDF на C#
    #34898656
Nafigator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прочитал мануал.
К сожалению, никак не удается запустить функцию! Сделал простейший пример:

Код: 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.
using System;

namespace DB2ClassLibrary
{
	/// <summary>
	/// Summary description for DB2Class1.
	/// This class and method can be used as the basis for a DB2 CLR procedure.
	/// </summary>
	public class DB2Test
	{
		public static void SamDurak(Double inOperand1, Double inOperand2, out Double outResult, Int16 operand1NullInd, Int16 operand2NullInd, out Int16 outResultNullInd, ref String sqlState, String funcName, String specName, ref String diagMsg, Int32 callType)
		{
			outResultNullInd =  0 ;
			outResult = inOperand1 + inOperand2;
		}
	}
}

Положил dll-ку в подкаталог FUNCTION, создал потом функцию:

CREATE FUNCTION S(REAL, REAL)
RETURNS REAL
EXTERNAL NAME 'DB2ClassLibrary.dll:DB2ClassLibrary.DB2Test!SamDurak'
LANGUAGE CLR
PARAMETER STYLE SQL
DETERMINISTIC
FENCED
THREADSAFE
NO SCRATCHPAD
EXECUTION CONTROL SAFE
ALLOW PARALLEL
NO DBINFO
FINAL CALL


Пытаюсь вызвать VALUES S(1);
Вылетает ошибка с кодом 3, т.е.
A method with types matching those specified in the database catalogs could not be found in the class specified.

Чего только не пробовал - и пробовать String/varchar и int32 использовать в параметрах (меняя вызов, конечно), и в коде использовать db2-шные типы (мало ли) - всё время одна и та же ошибка... :(

Вначале этих системных параметров не было, пробовал их проигнорировать - без разницы! Возможно дело именно в них и сочетании указываемых параметров и параметров создания функции в sql....
...
Рейтинг: 0 / 0
Результат сравнения значения столбца в виде boolean + вопрос об UDF на C#
    #34898657
Nafigator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Опечатка. Конечно же, пытался вызвать с ДВУМЯ параметрами в данном случае
...
Рейтинг: 0 / 0
Результат сравнения значения столбца в виде boolean + вопрос об UDF на C#
    #34900614
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NafigatorДопустим,
SELECT USERTYPE_ID > 0 FROM USERS WHERE LOGINNAME = 'BLABLA'....

И еще, на другую тему: допустим, я в проекте C# использую свою функцию кодирования пароля MD5. Я хочу, чтобы из DB2-шного контрол-центра тоже можно было добавлять записи, кодируя этой функцией. Как я понимаю, нужно засунуть UDF в DB2-шную базу. А кто-то подскажет статью, где приведет пример, как это правильно делается?Если вам MD5 в DB2 надо, посмотрите сюда .
...
Рейтинг: 0 / 0
Результат сравнения значения столбца в виде boolean + вопрос об UDF на C#
    #34901923
Nafigator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поэтому, хотя вроде бы сделал по правилам, ошибка прежняя.
Не обижайтесь, что java-вариант использовать не хочу.

Код: 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.
using System;
using System.Text;
using System.Security.Cryptography;

namespace Tools.Encryption
{
	public class encrypting
	{
		public static string MD5(string password) {
			byte[] textBytes = System.Text.Encoding.Default.GetBytes(password);
			try {
				System.Security.Cryptography.MD5CryptoServiceProvider cryptHandler;
				cryptHandler = new System.Security.Cryptography.MD5CryptoServiceProvider();
				byte[] hash = cryptHandler.ComputeHash(textBytes);
				string ret = "";
				foreach (byte a in hash) {
					if (a <  16 ) ret += "0" + a.ToString("x");
					else ret += a.ToString("x");
				}
				return ret;
			}
			catch {
				return "";
			}
		}
		public static void MD5(string password, out string encryptedpassword, Int16 passwordNullInd, out Int16 encryptedpasswordNullInd)
		{
			if (passwordNullInd == - 1 )
			{
				encryptedpasswordNullInd = - 1 ;
				encryptedpassword = "";
			}
			else
			{
				encryptedpasswordNullInd =  0 ;
				encryptedpassword = MD5(password);
			}
		}
	}
}

CREATE FUNCTION MD5(VARCHAR( 30 ))
RETURNS VARCHAR( 16 ) FOR BIT DATA
EXTERNAL NAME 'Tools.Encryption.encrypting!MD5'
FENCED THREADSAFE RETURNS NULL ON NULL INPUT
DETERMINISTIC NO SQL NO EXTERNAL ACTION
LANGUAGE CLR PARAMETER STYLE SQL ALLOW PARALLEL;
...
Рейтинг: 0 / 0
Результат сравнения значения столбца в виде boolean + вопрос об UDF на C#
    #34903365
DB2Adventurer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Какой у вас .net framework и какая версия DB2? Поддержка .net 2.0 появилась только с 8FP14. Может лучше все-таки на С написать?
здесь есть примеры удф с мд5 на С для нескольких алгоритмов
...
Рейтинг: 0 / 0
Результат сравнения значения столбца в виде boolean + вопрос об UDF на C#
    #34904086
Nafigator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может придется и на C...
А пока что: net 2.0, db v9.1.200.166

p.s. А что такое 8FP14? 8-[
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Результат сравнения значения столбца в виде boolean + вопрос об UDF на C#
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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