ich einige dynamische SQL haben als Teil einer gespeicherten Prozedur, die ich ausführen möchten:mit COALESCE in dynamischen NULL Entfernen SQL
SET @SQL_TXT = 'INSERT INTO ' [email protected]_TABLE_NAME+
'([ITEM_NAME]
,[ADD_DTT]
,[ADD_USR]
,[UPD_DTT]
,[UPD_USR]
,[ACTIVE_IND]
,[ITEM_PK])
VALUES
('''[email protected]_VALUE+'''
, CURRENT_TIMESTAMP
, '''[email protected]_USR_DOM_NAME+''', CURRENT_TIMESTAMP,'''[email protected]_USR_DOM_NAME+''',''Y'','''[email protected]_PK+''');
SET @Id = SCOPE_IDENTITY();
RETURN;'
Das läuft gut, aber ITEM_NAME kann nicht NULL sein, damit ich zu ad a wollen koaleszieren():
SET @SQL_TXT = 'INSERT INTO ' [email protected]_TABLE_NAME+
'(COALESCE([ITEM_NAME], '')
,[ADD_DTT]
,[ADD_USR]
,[UPD_DTT]
,[UPD_USR]
,[ACTIVE_IND]
,[ITEM_PK])
VALUES
('''[email protected]_VALUE+'''
, CURRENT_TIMESTAMP
, '''[email protected]_USR_DOM_NAME+''', CURRENT_TIMESTAMP,'''[email protected]_USR_DOM_NAME+''',''Y'','''[email protected]_PK+''');
SET @Id = SCOPE_IDENTITY();
RETURN;'
Aber ich bin immer diese Fehlermeldung:
Incorrect syntax near the keyword 'COALESCE'.
Unclosed quotation mark after the character string ');
SET @Id = SCOPE_IDENTITY();
RETURN;'.
Incorrect syntax near '='.
Für das Leben von mir, ich sehe nicht, wo diese ')' i s. Was mache ich falsch?
Edit: hier ist die exec
EXECUTE SP_executesql @SQL_TXT, N'@Id INTEGER OUTPUT', @Id OUTPUT
in dynamischer sql, 2 Hochkommata = 1 Einzel Zitat. Nach der Konvertierung heißt das: (coalesce ([item_name], ') ..... versuche einen weiteren Satz von' ':' hinzuzufügen (koaleszieren ([item_name], '' '') – fleetmack
@OK. Ich sehe und und das macht Sinn.Ich bekomme immer noch: Falsche Syntax in der Nähe des Schlüsselwortes "COALESCE". Falsche Syntax in der Nähe von "=". –
Sorry, ich kenne SQL Server überhaupt nicht.Vielleicht brauchen Sie ein Leerzeichen vor dem Zusammenfügen? also vielleicht versuchen ' (koaleszieren [Elementname],' '' ') –
fleetmack