kostenloser Webspace werbefrei: lima-city


MYSQL Funktion

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    finch

    Kostenloser Webspace von finch, auf Homepage erstellen warten

    finch hat kostenlosen Webspace.

    Hi @ all!

    Ich brauch eine MYSQL-GespeicherteFunktion (nicht PHP wird von außen aufgerufen C#) mit folger Logik:

    Also 2 IN Parameter( INT und VARCHAR )und ein RETURN VARCHAR

    1.) INSERT in Tabelle A
    2.) aus der neuen INSERT-Id und dem IN-Parameter einen String erzeugen
    3.) Diesen STring in die Tabelle A in diesen Datensatz UPDATEN
    4.)Diesen String auch per Return zurückgeben

    Wär echt geil genial wenn mir da jmd helfen könnte, ich hab schon versucht mittels google usw die funktion zu basteln jedoch dauert das ewig und noch länger da man sehr wenig wirklich brauchbares findet... DANKE
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. So geht's :

    DROP TABLE IF EXISTS `tabelle_a`;
    CREATE TABLE IF NOT EXISTS `tabelle_a` (
      `id` int(11) NOT NULL auto_increment,
      `col_1` int(11) NOT NULL,
      `col_2` varchar(256) NOT NULL,
      PRIMARY KEY  (`id`)
    );
    
    DELIMITER //
    DROP FUNCTION IF EXISTS `my_function`//
    CREATE FUNCTION `my_function`(param_1 INT, param_2 VARCHAR(128)) RETURNS varchar(250)
    BEGIN
    DECLARE new_id INT;
    DECLARE retval VARCHAR(250);
    DECLARE cur1 CURSOR FOR SELECT LAST_INSERT_ID();
    DECLARE cur2 CURSOR FOR SELECT CONCAT_WS('-',new_id,param_1,param_2);
    
    INSERT INTO tabelle_a(col_1,col_2) VALUES(param_1,param_2);
    
    OPEN cur1;
    FETCH cur1 INTO new_id;
    CLOSE cur1;
    
    OPEN cur2;
    FETCH cur2 INTO retval;
    CLOSE cur2;
    
    UPDATE tabelle_a SET col_2=retval WHERE id=new_id;
    
    RETURN retval;
    END


    wenn Du dann
    SELECT my_function(1,'Test');
    SELECT my_function(11,'Test_1');
    SELECT my_function(331,'TestXX');
    SELECT my_function(131,'TestYY');
    
    SELECT * from tabelle_a;

    aufrufst
    bekommst Du
    +----+-------+--------------+
    | id | col_1 | col_2        |
    +----+-------+--------------+
    |  1 |     1 | 1-1-Test     | 
    |  2 |    11 | 2-11-Test_1  | 
    |  3 |   331 | 3-331-TestXX | 
    |  4 |   131 | 4-131-TestYY | 
    +----+-------+--------------+


    Ciao,
    Franco
  4. Autor dieses Themas

    finch

    Kostenloser Webspace von finch, auf Homepage erstellen warten

    finch hat kostenlosen Webspace.

    Hey danke! Muss es jetzt noch umbaun und einbaun dann spar ich mir ne menge Zeit beim inserten neuer Bilder coole Sache.
    Gibts in Mysql auch sowas wie lpad() und rpad() also ich müsste meinen String folgenderweise zusammenbaun: 4 Zeichen erste id und dann 6zeichen nächste id und dann noch .jpg.

    Also in Oracle SQL würds so lauten lpad(albumid, 4, '0')||lpad(photoid, 6, '0')||'.jpg' dann kommt sowas wie 000200012.jpg raus. wie würd dies in MySql aussehen. thx

    Beitrag zuletzt geändert: 28.2.2010 22:48:07 von finch
  5. Alles schön und gut, aber Functions können wir hier unter Lima-city nicht definieren, oder?!?

    Ich hab's zumindest mal hiermit (bewusst ein paar Stufen einfacher) probiert:
    CREATE FUNCTION hello (s CHAR(20))
    RETURNS CHAR(50) DETERMINISTIC
    RETURN CONCAT('Hello, ',s,'!');

    und bin mit
    #1044 - Access denied for user 'USER16nnnn'@'%' to database 'db_nnnnnn_n'

    höflich, aber doch sehr bestimmt, zurückgewiesen worden. :-(
  6. Ja, da braucht man entweder Super-User Rechte,
    oder der Admin stellt ein paar der Sicherheitsfunktionen von mySQL ab,
    dann würden auch "normale" user Stored Procedures anlegen dürfen.

    und ja, es gibt lpad() usw ...
    http://dev.mysql.com/doc/refman/5.1/en/string-functions.html

    Beitrag zuletzt geändert: 1.3.2010 10:31:50 von franco-bez
  7. Autor dieses Themas

    finch

    Kostenloser Webspace von finch, auf Homepage erstellen warten

    finch hat kostenlosen Webspace.

    @Webmaster: Könnte ich bitte diese Rechte haben? THX
  8. Um Functions anzulegen, brauchst du das INSERT-Recht für die mysql.func Tabelle. Das bekommst du auf Lima garantiert nicht.

    Somit geschlossen.

    Beitrag zuletzt geändert: 4.3.2010 16:04:54 von nikic
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!