創建功能的代碼,我有DDL代碼,以創建一個從SQLCMD和其他特定的SQL Server客戶端完美運行的函數:運行不SQLCMD
/*
* Émulo de la función LPAD() de Oracle
*/
CREATE FUNCTION LPAD
(
@cadena VARCHAR(MAX), -- Texto de partida
@tamano INT, -- Tamaño de la cadena resultante
@relleno CHAR -- Carácter de relleno
)
RETURNS VARCHAR(MAX)
AS
BEGIN
return REPLICATE(@relleno, @tamano - LEN(@cadena)) + @cadena;
END
GO
但是,它通常不會從跨DBMS客戶端上運行( SQL小提琴,DBeaver,HeidiSQL ...):
[102]'@cadena'附近語法不正確。
我懷疑這與GO
批處理分隔符沒有執行有關。如果是這樣的話,是否有其他語法?
您需要告訴那些客戶您正在使用不同的分隔符。在SQL Fiddle中,您可以使用最初顯示'[[; ]在源代碼編輯器下面。其他SQL客戶端應該有類似的選項。 –
@a_horse_with_no_name我改變了'[去]'編譯模式,但仍然不能使用該函數,還有什麼缺失? [sqlFiddle](http://sqlfiddle.com/#!6/9f008/3) –
在SQL Server中,您可以**將**用戶寫入的函數用模式/所有者作爲前綴:'SELECT dbo.LPAD('hola' ,10,'+');'http://sqlfiddle.com/#!6/9f008/4 –