ďťż
 
Funkcja replace w triggerach MS SQL Server 2005 ďťż
 
Funkcja replace w triggerach MS SQL Server 2005
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

Funkcja replace w triggerach MS SQL Server 2005



lukasz_otwinowski@yahoo.pl - 12-07-2007 00:09
Funkcja replace w triggerach MS SQL Server 2005
  Witam,

Mam mały problem z funkcją REPLACE w triggerze. Po krótce wytłumaczę
co chcę osiągnąć:

Storzyłem tabelę składającą się z 20 kolumn: Opis1, Opis1a,... Opis10,
Opis10a
Następnie stworzyłem triggera on update, który przy update'cie kolumny
Opis1 automatycznie przepisuje wartość do kolumny Opis1a (tak samo dla
Opis2>>Opis2a... itd).

CREATE TRIGGER [updateOpisA] ON [CDN].[TwrOpis]
FOR UPDATE
AS
BEGIN
if update(Opis1)
begin
update [CDN].[TwrOpis]
set Opis1a=Opis1
end
END
..
..
..

Do tego momentu wszystko gra... problem pojawia się gdy z kolumny
Opis1a (jak i Opis2a... Opis10a) chcę wyciąć znaczniki html'owe <b>,
<u>, <i>. Używam do tego funkcji REPLACE lecz niestety coś nie gra...

BEGIN
if update(Opis1)
begin
update [CDN].[TwrOpis]
set Opis1a=Opis1
select Opis1a, replace (Opis1a, '<b>', ''), replace(Opis1a, '</b>',
''), replace (Opis1a, '<i>', ''), replace (Opis1a, '</i>', ''),
replace (Opis1a, '<u>', ''), replace (Opis1a, '</u>', '')
from [CDN].[TwrOpis]
end
END

To jest akurat ostatnia próba użycia funkcji replace. Próbowałem
również następujących skłądni:

if update(Opis1)
begin
update [CDN].[TwrOpis]
set Opis1a=Opis1
set Opis1a= replace (Opis1a, '<b>', '')
from [CDN].[TwrOpis]

end

oraz:

select replace(Opis1a, '<b>', '')

JEDNAK NIE DZIAŁA!!!!!!!!! PROSZĘ O POMOC!!!!!!!!!!!!!!!!!!!!!!!





Adam =?iso-8859-2?Q?Wi=B6niecki?= - 12-07-2007 00:09

  On 2007-07-11, lukasz_otwinowski@yahoo.pl <lukasz_otwinowski@yahoo.pl> wrote:

> Do tego momentu wszystko gra... problem pojawia się gdy z kolumny
> Opis1a (jak i Opis2a... Opis10a) chcę wyciąć znaczniki html'owe <b>,
><u>, <i>. Używam do tego funkcji REPLACE lecz niestety coś nie gra...
>
> BEGIN
> if update(Opis1)
> begin
> update [CDN].[TwrOpis]
> set Opis1a=Opis1
> select Opis1a, replace (Opis1a, '<b>', ''), replace(Opis1a, '</b>',
> ''), replace (Opis1a, '<i>', ''), replace (Opis1a, '</i>', ''),
> replace (Opis1a, '<u>', ''), replace (Opis1a, '</u>', '')
> from [CDN].[TwrOpis]
> end
> END

A jednak działa:

CREATE PROCEDURE test
AS BEGIN
DECLARE @str VARCHAR( 64 )
SELECT @str = '<b>Ala</b> ma kota';
PRINT @str;
SELECT @str = replace( @str, '<b>', '' );
PRINT @str;
SELECT @str = replace( @str, '</b>', '' );
PRINT @str;
END

--
Adam Wiśniecki




lukasz_otwinowski@yahoo.pl - 12-07-2007 00:09

  On 11 Lip, 12:02, Adam Wiśniecki
<USUNTO.adam.wisniecki.TOROWN...@gmail.com> wrote:
> On 2007-07-11, lukasz_otwinow...@yahoo.pl <lukasz_otwinow...@yahoo.pl> wrote:
>
> > Do tego momentu wszystko gra... problem pojawia się gdy z kolumny
> > Opis1a (jak i Opis2a... Opis10a) chcę wyciąć znaczniki html'owe <b>,
> ><u>, <i>. Używam do tego funkcji REPLACE lecz niestety coś nie gra....
>
> > BEGIN
> > if update(Opis1)
> > begin
> > update [CDN].[TwrOpis]
> > set Opis1a=Opis1
> > select Opis1a, replace (Opis1a, '<b>', ''), replace(Opis1a, '</b>',
> > ''), replace (Opis1a, '<i>', ''), replace (Opis1a, '</i>', ''),
> > replace (Opis1a, '<u>', ''), replace (Opis1a, '</u>', '')
> > from [CDN].[TwrOpis]
> > end
> > END
>
> A jednak działa:
>
> CREATE PROCEDURE test
> AS BEGIN
> DECLARE @str VARCHAR( 64 )
> SELECT @str = '<b>Ala</b> ma kota';
> PRINT @str;
> SELECT @str = replace( @str, '<b>', '' );
> PRINT @str;
> SELECT @str = replace( @str, '</b>', '' );
> PRINT @str;
> END
>
> --
> Adam Wiśniecki

Może w procedurze działa, spróbuj w triggerze




Adam =?iso-8859-2?Q?Wi=B6niecki?= - 12-07-2007 00:09

  On 2007-07-11, lukasz_otwinowski@yahoo.pl <lukasz_otwinowski@yahoo.pl> wrote:

> Może w procedurze działa, spróbuj w triggerze

Wykorzystaj podany wcześniej kod w wyzwalaczu a później mów,
że nie działa. Jeżeli nadal twierdzisz, że nie działa pokaż
kod wyzwalacza (tylko 'esencja' bez zbędnych elementów).

--
Adam Wiśniecki





lukasz_otwinowski@yahoo.pl - 12-07-2007 00:09

  On 11 Lip, 14:11, Adam Wiśniecki
<USUNTO.adam.wisniecki.TOROWN...@gmail.com> wrote:
> On 2007-07-11, lukasz_otwinow...@yahoo.pl <lukasz_otwinow...@yahoo.pl> wrote:
>
> > Może w procedurze działa, spróbuj w triggerze
>
> Wykorzystaj podany wcześniej kod w wyzwalaczu a później mów,
> że nie działa. Jeżeli nadal twierdzisz, że nie działa pokaż
> kod wyzwalacza (tylko 'esencja' bez zbędnych elementów).
>
> --
> Adam Wiśniecki

Zastosowałem identyczną składnie w triggerze, mianowicie:

CREATE TRIGGER [updateOpisA] ON [CDN].[TwrOpis]
FOR UPDATE
AS
BEGIN
if update(Opis1)
begin
update [CDN].[TwrOpis]
set Opis1a=Opis1
end

if update(Opis1a)
begin
select Opis1a= replace (Opis1a, '<b>', '')
end
end

I wyskakuje mi błąd: Error 207: Invalid column name 'Opis1a' chociaż
taka kolumna istnieje




Adam =?iso-8859-2?Q?Wi=C5=9Bniecki?= - 12-07-2007 00:09

  On 2007-07-11, lukasz_otwinowski@yahoo.pl <lukasz_otwinowski@yahoo.pl> wrote:

> Zastosowałem identyczną składnie w triggerze, mianowicie:
>
> CREATE TRIGGER [updateOpisA] ON [CDN].[TwrOpis]
> FOR UPDATE
> AS
> BEGIN
> if update(Opis1)
> begin
> update [CDN].[TwrOpis]
> set Opis1a=Opis1
> end
>
> if update(Opis1a)
> begin
> select Opis1a= replace (Opis1a, '<b>', '')
> end
> end

Ech...

ALTER TRIGGER [updateOpisA] ON [TwrOpis]
FOR UPDATE
AS
BEGIN
if update(Opis1)
begin
update [TwrOpis]
set Opis1a = replace( Opis1, '<b>', '' )
end
end

>
> I wyskakuje mi błąd: Error 207: Invalid column name 'Opis1a' chociaż
> taka kolumna istnieje
>

--
Adam Wiśniecki




Borafu - 12-07-2007 00:09

  lukasz_otwinowski@yahoo.pl pisze:
> if update(Opis1a)
> begin
> select Opis1a= replace (Opis1a, '<b>', '')
> end
>
> I wyskakuje mi błąd: Error 207: Invalid column name 'Opis1a' chociaż
> taka kolumna istnieje

Istnieje, ale w jakiej tabeli?
Pytanie istotne, bo zleciłeś do wykonania jakieś działanie, a dokładnie to:

select Opis1a= replace (Opis1a, '<b>', '')

ale nie wspomniałeś w poleceniu ani słowa o tym, której tabeli ono ma
dotyczyć. Co więcej, nawet gdybyś dodał klauzulę "FROM [CDN].[TwrOpis]"
to nie będzie to, o co Ci chodziło, bo pojechałbyś po całości, a chyba
nie o to Ci chodziło.

Musisz wiedzieć na którym rekordzie była zmiana.

Krótko mówiąc -> Books Online -> "triggers" ;-)

Pozdr
--
Borafu




lukasz_otwinowski@yahoo.pl - 12-07-2007 00:09

  On 11 Lip, 15:12, Adam WiĹ niecki
<USUNTO.adam.wisniecki.TOROWN...@gmail.com> wrote:
> On 2007-07-11, lukasz_otwinow...@yahoo.pl <lukasz_otwinow...@yahoo.pl> wrote:
>
>
>
>
>
> > Zastosowałem identyczną składnie w triggerze, mianowicie:
>
> > CREATE TRIGGER [updateOpisA] ON [CDN].[TwrOpis]
> > FOR UPDATE
> > AS
> > BEGIN
> > if update(Opis1)
> > begin
> > update [CDN].[TwrOpis]
> > set Opis1a=Opis1
> > end
>
> > if update(Opis1a)
> > begin
> > select Opis1a= replace (Opis1a, '<b>', '')
> > end
> > end
>
> Ech...
>
> ALTER TRIGGER [updateOpisA] ON [TwrOpis]
> FOR UPDATE
> AS
> BEGIN
> if update(Opis1)
> begin
> update [TwrOpis]
> set Opis1a = replace( Opis1, '<b>', '' )
> end
> end
>
>
>
> > I wyskakuje mi błąd: Error 207: Invalid column name 'Opis1a' chociaż
> > taka kolumna istnieje
>
> --
> Adam WiĹ niecki- Ukryj cytowany tekst -
>
> - Pokaż cytowany tekst -

Przepraszam za stracone nerwy ale jestem początkującym jeżeli chodzi o
triggery.

Z tego co mi napisałeś zrobiłem trigger:

ALTER TRIGGER [updateOpisA] ON [CDN].[TwrOpis]
FOR UPDATE
AS
BEGIN
if update(Opis1)
begin
update [CDN].[TwrOpis]
set Opis1a = replace( Opis1, '<b>', '' )
end
end

Syntax niby jest poprawny, lecz gdy uruchamia się trigger wyskakuje
błąd: "Error 8116: Argument data type text is invalid for argument 1
of replace function"




Adam =?iso-8859-2?Q?Wi=B6niecki?= - 14-07-2007 00:02

  On 2007-07-11, lukasz_otwinowski@yahoo.pl <lukasz_otwinowski@yahoo.pl> wrote:

> Z tego co mi napisałeś zrobiłem trigger:
>
> ALTER TRIGGER [updateOpisA] ON [CDN].[TwrOpis]
> FOR UPDATE
> AS
> BEGIN
> if update(Opis1)
> begin
> update [CDN].[TwrOpis]
> set Opis1a = replace( Opis1, '<b>', '' )
> end
> end
>
>
> Syntax niby jest poprawny, lecz gdy uruchamia się trigger wyskakuje
> błąd: "Error 8116: Argument data type text is invalid for argument 1
> of replace function"

Domyślam się, że Opis1 i Opis1a są typu text.

update [TwrOpis]
set Opis1a = replace( cast( Opis1 as varchar( 8000 ) ), '<b>', '' )

--
Adam Wiśniecki




Otwin - 17-07-2007 00:00

  On 13 Lip, 11:23, Adam Wiśniecki
<USUNTO.adam.wisniecki.TOROWN...@gmail.com> wrote:
> On 2007-07-11, lukasz_otwinow...@yahoo.pl <lukasz_otwinow...@yahoo.pl> wrote:
>
>
>
>
>
> > Z tego co mi napisałeś zrobiłem trigger:
>
> > ALTER TRIGGER [updateOpisA] ON [CDN].[TwrOpis]
> > FOR UPDATE
> > AS
> > BEGIN
> > if update(Opis1)
> > begin
> > update [CDN].[TwrOpis]
> > set Opis1a = replace( Opis1, '<b>', '' )
> > end
> > end
>
> > Syntax niby jest poprawny, lecz gdy uruchamia się trigger wyskakuje
> > błąd: "Error 8116: Argument data type text is invalid for argument 1
> > of replace function"
>
> Domyślam się, że Opis1 i Opis1a są typu text.
>
> update [TwrOpis]
> set Opis1a = replace( cast( Opis1 as varchar( 8000 ) ), '<b>', '' )
>
> --
> Adam Wiśniecki- Ukryj cytowany tekst -
>
> - Pokaż cytowany tekst -

DZIĘKUJĘ!!!!!!!!!!!!!!!!!!!!!!!!!
DZIAŁA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ;)
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Oracle PL/SQL Wstawianie =?ISO-8859-2?Q?wynik=F3w_kolekcji_d?==?ISO-8859-2?Q?o_tabeli?= [MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?= =?iso-8859-2?Q?=5Bmssql=5D_Zapytania_rekurencyjne__-_czy_sk=B3adnia_sql?==?iso-8859-2?Q?_co=B6_takiego_przewiduje_=3F?= [Oracle PL/SQL] Cursor i zapis =?ISO-8859-2?Q?rekord=F3w_do_?==?ISO-8859-2?Q?kolejnych_plik=F3w?= =?iso-8859-2?Q?=5BMySQL=5D_Co_minimalnie_potrzebne_zeby_mie=E 6_klienta_My?==?iso-8859-2?Q?SQL_na_Linuxie=3F?= [oracle] - Oracle SQL Developer - co to jest SID? =?ISO-8859-2?Q?[Oracle]_Wywo=B3anie_skryptu_sh_z_PL/SQL-a=3F=3F?= [oracle] Baza danych do kursy Introduction to Oracle9i:PL/SQL ? Skąd ją pobrać ? Zapytanie SQL z =?ISO-8859-2?Q?pust=B1_tabel=B1?= =?iso-8859-2?q?Pytanie_SQL__spe=B3niaj=B1ce_wiecej_jak_jeden_ warunek_na_jednej_kolumnie=2E?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • bajkomoda.xlx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com