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

И еще, на другую тему: допустим, я в проекте C# использую свою функцию кодирования пароля MD5. Я хочу, чтобы из DB2-шного контрол-центра тоже можно было добавлять записи, кодируя этой функцией. Как я понимаю, нужно засунуть UDF в DB2-шную базу. А кто-то подскажет статью, где приведет пример, как это правильно делается?
...
Рейтинг: 0 / 0
25.10.2007, 19:41
    #34895696
mustaccio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат сравнения значения столбца в виде boolean + вопрос об UDF на C#
Код: 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
26.10.2007, 11:46
    #34896836
Nafigator
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат сравнения значения столбца в виде boolean + вопрос об UDF на C#
А, чёрт! Я так и делал - просто кавычки не поставил... Спасибо!
И за статью тоже :)
...
Рейтинг: 0 / 0
26.10.2007, 19:41
    #34898656
Nafigator
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат сравнения значения столбца в виде boolean + вопрос об UDF на C#
Прочитал мануал.
К сожалению, никак не удается запустить функцию! Сделал простейший пример:

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

И еще, на другую тему: допустим, я в проекте C# использую свою функцию кодирования пароля MD5. Я хочу, чтобы из DB2-шного контрол-центра тоже можно было добавлять записи, кодируя этой функцией. Как я понимаю, нужно засунуть UDF в DB2-шную базу. А кто-то подскажет статью, где приведет пример, как это правильно делается?Если вам MD5 в DB2 надо, посмотрите сюда .
...
Рейтинг: 0 / 0
29.10.2007, 15:27
    #34901923
Nafigator
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат сравнения значения столбца в виде boolean + вопрос об UDF на C#
Поэтому, хотя вроде бы сделал по правилам, ошибка прежняя.
Не обижайтесь, что 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
30.10.2007, 03:39
    #34903365
DB2Adventurer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат сравнения значения столбца в виде boolean + вопрос об UDF на C#
Какой у вас .net framework и какая версия DB2? Поддержка .net 2.0 появилась только с 8FP14. Может лучше все-таки на С написать?
здесь есть примеры удф с мд5 на С для нескольких алгоритмов
...
Рейтинг: 0 / 0
30.10.2007, 11:51
    #34904086
Nafigator
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат сравнения значения столбца в виде boolean + вопрос об UDF на C#
Может придется и на C...
А пока что: net 2.0, db v9.1.200.166

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


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