Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Stored Procedure: Wie varchar iterieren? (https://www.delphipraxis.net/191135-stored-procedure-wie-varchar-iterieren.html)

Blup 16. Dez 2016 16:14

AW: Stored Procedure: Wie varchar iterieren?
 
Wenn bei den Parametern der Prozedur kein Zeichensatz/COLLATE angegeben ist, wird wohl der Standardzeichensatz der jeweiligen Datenbank verwendet.

http://www.ibexpert.net/ibe_de/index...ardzeichensatz
http://firebirdsql.org/refdocs/langr...procedure.html

IBExpert 18. Dez 2016 07:36

AW: Stored Procedure: Wie varchar iterieren?
 
Diese Version trennt Klein- und Großschreibung weil explizite Nutzung collate unicode ohne ci

Code:
create or alter procedure REPL (
    VAL varchar(10))
returns (
    RES varchar(10))
as
declare variable C char(1) character set utf8 collate unicode;
begin
  res='';
  while (char_length(val)>0) do
  begin
    c=substring(val from 1 for 1);
    val=substring(val from 2 for 10);
    if (c='A') then c='1'; else
    if (c='C') then c='3';
    res=res||c;
  end
  suspend;
end
Und diese Version unterscheidet das nicht. Wenn die DB mit Default UTF8 Charset
und Default Collation Unicode_ci angelegt wurde, würde das so auch funktionieren,
wenn man keine explizite Angaben dafür aufnimmt. In so einer DB kann man
das dann aber trotzdem wie oben für diesen Zweck überschreiben.

Code:
create or alter procedure REPL (
    VAL varchar(10))
returns (
    RES varchar(10))
as
declare variable C char(1) character set utf8 collate unicode_ci;
begin
  res='';
  while (char_length(val)>0) do
  begin
    c=substring(val from 1 for 1);
    val=substring(val from 2 for 10);
    if (c='A') then c='1'; else
    if (c='C') then c='3';
    res=res||c;
  end
  suspend;
end


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:36 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz