0
A
答えて
1
パラメータタイプは、それが常に関数内で同じである結果として、機能ヘッダ内で定義されています。定義された型のパラメータ型とは異なる型のパラメータを渡すと、SQL Serverは定義済みの型のパラメータ型に最も適しています。
私はあなたの後ろのように働きたいいくつかの機能を持っています。私がこの問題を回避する方法は、varchar(x)として関数パラメータを定義し、必要なCVONVERT()を発行するか、関数の呼び出し時にパラメータを呼び出す際に入力パラメータに対して書式を設定することです。
- ISDATE(式):あなたは、日付や数値で動作する関数の引数はvarchar(X)を作りたい場合は、後にされている内容に応じて、関数の使用中
CREATE FUNCTION dbo.QuoteValue ( @InputStr varchar(8000) --value to format ) RETURNS varchar(8000) AS BEGIN RETURN COALESCE(''''[email protected]+'''','null') END GO DECLARE @DateValue datetime SET @DateValue=GETDATE() PRINT '@DateValue='+dbo.QuoteValue(@DateValue) PRINT '@DateValue='+dbo.QuoteValue(CONVERT(varchar,@DateValue,121))
- 入力式が有効な日付であればISDATEは1を返します。それ以外の場合は0を返します。次の表は、選択した例の戻り値を示しています。
- ISNUMERIC(Transact-SQL) - ISNUMERICは、入力式が有効な整数、浮動小数点数、金額または小数点の型に評価されたときに1を返します。それ以外の場合は0が返されます。戻り値1は、expressionが少なくとも1つの数値型に変換できることを示します。ここ
日付を処理する方法の例です...
CREATE FUNCTION dbo.DateXYZ
(
@InputStr varchar(50) --date value manipulate
)
RETURNS
datetime
AS
BEGIN
DECLARE @DateValue datetime
IF ISDATE(@InputStr)=1
BEGIN
SET @[email protected]
--do some datetime manipulation here
END
RETURN @DateValue --will return null if not given a valid date
END
GO
次のようにあなたはそれを使用することができます。
DECLARE @X varchar(50)
DECLARE @Y varchar(50)
DECLARE @BadDate datetime
DECLARE @GoodDate datetime
SET @X='bad date!!'
SET @Y='1/1/2009'
SET @BadDate=dbo.DateXYZ(@X)
SET @GoodDate=dbo.DateXYZ(@Y)
SELECT @BadDate,@GoodDate
あなたも何を意味するためにパラメータを渡すことができが渡されています:
CREATE FUNCTION dbo.AnyType
(
@InputStr varchar(8000) --general purpose value
,@Type char(1) --"I"nt, "F"loat, "D"atetime, "S"tring, etc...
)
RETURNS
varchar(8000)
AS
BEGIN
DECLARE @ReturnValue varchar(8000)
IF @Type='I' --int
BEGIN
DECLARE @IntValue int
SET @[email protected]
--do some int manipulation here
SET @[email protected]
END
ELSE IF @Type='F' --float
BEGIN
DECLARE @FloatValue float
SET @[email protected]
--do some float manipulation here
SET @[email protected]
END
ELSE IF @Type='D' --datetime
BEGIN
DECLARE @DatetimeValue datetime
SET @[email protected]
--do some datetime manipulation here
SET @ReturnValue=CONVERT(varchar(23),@DatetimeValue,121)
END
--etc...
--etc...
RETURN @ReturnValue
END
GO
関数は、それをvarchar(x)にして、呼び出し元に適切なデータ型の変数に代入させるか、必要に応じて結果セットにCASTします。
0
CREATE FUNCTION
dbo.MyFunction(@Param1 VARCHAR(50), @Param2 INT, @Param3 UNIQUEIDENTIFIER)
RETURNS
INT
確かに、あなたの関数のパラメータの型を定義することができますが、実際にあなたの質問には当てはまりませんよね?どうか明らかにしてください!
マルク
関連する問題
- 1. ログ関数Sql Serverのパラメータ
- 2. 式をSQL Server関数のパラメータとして使用する
- 3. 関数をパラメータとして渡す
- 4. アニメーション関数をパラメータとして渡す
- 5. イテレータを関数パラメータとして渡す
- 6. 関数パラメータとしてテンソルフロープレースホルダを渡す
- 7. VB.netからSQL Serverストアドプロシージャにパラメータとしてデータテーブルを渡す
- 8. SQLのIntervalパラメータに関数を渡す
- 9. カラムがdatetimeタイプの場合のパラメータとしてのSQL Serverカラム
- 10. 関数メンバポインタを関数のパラメータとして渡します
- 11. パラメータとしてPowerShell渡し関数
- 12. SQL Server:パラメータ名を持つコール関数
- 13. 関数を別の関数にパラメータとして渡すには?
- 14. 別の関数エラーにパラメータとして関数を渡す
- 15. メンバ関数をメンバ関数のパラメータとして渡す
- 16. ローカル関数をパラメータとしてグローバル関数に渡す
- 17. 別の関数にパラメータとしてパラメータを持つ関数を渡す
- 18. 関数の戻り値をSQL関数のその他の関数のパラメータとして渡します。
- 19. 関数(パラメータ付き)をパラメータとして渡す?
- 20. 変数に関数を渡して、パラメータを渡します。
- 21. Delphiを使用してSQL Serverストアドプロシージャのパラメータ名を渡す
- 22. SQL Serverストアドプロシージャのパラメータを使用してテーブル名を渡す
- 23. SQL ServerのストアドプロシージャをFloatパラメータで使用して小数点を渡す
- 24. 関数をパラメータとして渡してjquery関数で実行します。
- 25. SQL Serverのストアドプロシージャのパラメータの戻り値のすべてのレコードがない場合は、関数に渡すパラメータ
- 26. 関数のパラメータとして変数の型を渡す
- 27. plot_ly関数のパラメータとして変数を渡す
- 28. スーパークラスを持つ関数をパラメータとして持つ関数への引数としてSubclassを渡す関数
- 29. 関数ポインタと推力としてそのパラメータを渡す::タプルをグローバル関数
- 30. 関数をパラメータとして渡すことの利点
達成したいことの例を追加して明確にできますか? –
それはあまりにもストアドプロシージャが悪いですし、関数は参照渡しやargvとargcのようなものを持っていません.... –