問題タブ [user-defined-functions]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server - テーブル値関数から明示的な Open XML 結果セットを返す
SQL Server (2008) のテーブル値関数から Open XML 形式で行を返そうとしています。結果の順序が、TVF の出力に挿入する順序と同じであることが保証されていないことを示唆する "for xml explicit" で結果を選択すると、エラーが発生することがあります。
だから私の最初の質問は:そうですか?
もしそうなら、私の次の質問は次のとおりです。これを回避する方法はありますか? これまでに思いついた最善の方法は、TVF 出力に id 列を含め、それを呼び出すときに他の列のみを選択し、id で並べ替えることです。ここでの問題は、* を選択するだけでなく、毎回すべての列を指定する必要があることです。これは、この場合は非常に厄介です (特に、これらの TVF が 42 個あり、すべてが異なる列であるため)。
TVF と Explicit Open XML が混在していないだけなのですか (これらは非常に適しているように見えるため、これは非常に残念なことです)、それとも役立つ何かが欠けているのでしょうか?
excel - Excel セルでユーザー定義のデータ型を返す
私はウェブを検索し、ここでスタックオーバーフローの質問を検索しましたが、解決策を見つけることができませんでした.
これが私がやりたいことです:
「MyClass」という名前のクラス モジュールに次のコードがあるとします。
p>次に、コードを含む別のモジュールにUDFがあります
p>セル A1 には「=InitializeMyClass(3)」があり、セル A2 には「=GetMyVar(A1)」があります。両方のセルで #VALUE エラーが発生します。これはもちろん、ユーザー定義のデータ型をセル A1 に返そうとしているためです。これは可能だと思いますが、方法がわかりません。
編集:そうそう、質問は、「ユーザー定義のデータ型をセルに返し、上記の例で別のUDFから呼び出す方法はありますか?これがCOM が必要かどうか. もしそうなら、誰かが私がどのように開始できるか知っていますか? 理想的には、誰かがこれがどのように機能したかの例を持っていれば、それは素晴らしいことです.
別の編集:さて、それができることがわかりました:この説明を読んでください、それは定量的ではありませんが、彼らが何をしているのかがわかりますhttp://www.quanttools.com/index.php?option= com_content&task=view&id=19
excel - 私がこれを行うことができない場合、独自のオブジェクトを定義する際の優れた知恵は何ですか?
これは、Excel と VBA 用です。BondClass が Class Module で適切に定義されていると仮定します。#VALUE を取得します。Excel セルに「=GetBondPrincipal()」と入力すると、構文的に間違ったことをしたのでしょうか、それとも Excel/VBA では不可能なのでしょうか? 私が本当にやりたいことはこれです: Excel セルでユーザー定義のデータ型を返す
しかし、解決策を見つけることができません。少なくとも、以下でやりたいことが可能かどうかを知りたいです。
p>私が提供した例では、InitializeBond を呼び出す必要はなく、「Call b.Initialize(.03,100)」と入力するだけでよいことがわかっています。これを行うと、コードは正常に機能します。しかし、組み込み型以外の型を返す UDF を取得できないようです。これを行う方法はありますか?非組み込み型の割り当てを定義する必要がありますか?
sql-server - SQL Serverのインラインテーブル値関数の戻り値のメタデータを取得するにはどうすればよいですか?
これはINFORMATION_SCHEMA.COLUMNSにないので、どこにありますか?
これはスキーマにバインドされたインラインテーブル値関数であるため、パラメータに基づいて出力スキーマを変更できる場合にストアドプロシージャが持つ可能性のある問題はありません。
sql - xが選択された行よりもはるかに高い場合でも、SELECT TOP xを使用したSQLの大幅なパフォーマンスの違い
テーブル値関数からいくつかの行を選択していますが、クエリに SELECT TOP を入れると、説明のつかない大きなパフォーマンスの違いが見つかりました。
完了するまでに 5 ~ 6 分以上かかります。
でも
約4、5秒で完了します。
返されたデータのセットが膨大であったとしても、これは驚くことではありませんが、関連する特定のクエリは 200,000行から5,000 行を返します。
そのため、どちらの場合も、SQL Server が 6000 行を最後まで検索し続けるため、テーブル全体が処理されますが、到達することはありません。では、なぜ大きな違いがあるのでしょうか。これは、SQL Server が結果セットのサイズを見越してスペースを割り当てる方法と関係がありますか (TOP 6000 により、メモリ内でより簡単に割り当てられる要件が低くなります)。他の誰かがこのようなことを目撃しましたか?
ありがとう
sql - テーブル値関数クエリプランはどこに行きましたか?
複雑なSQLステートメントをSQLServer2000のテーブル値関数でラップしました。SELECT*FROMdbo.NewFuncのクエリプランを見ると、作成したテーブルのテーブルスキャンが表示されます。
これは、テーブルがtempdbで作成されており、そこから選択しているためだと思います。
したがって、クエリは単純です:
私の質問は次のとおりです。
UDFは複雑なSQLステートメントと同じプランを使用していますか?
このUDFのインデックスを調整するにはどうすればよいですか?
本当の計画が見えますか?
sql - SQL - LastIndex を使用した Select ステートメント
ProductURLが保存されている結果セットがあります。
URL の最後の部分、つまり URL に表示される最後の '/' の後にあるものを取得する必要があります。
私は LASTINDEX を与える関数を持っています:
しかし、部分文字列内でこの関数を使用して Select ステートメントを実行するにはどうすればよいですか。
これはうまくいかないようですか?これを行う別の方法はありますか?
sql - テキスト属性とbase64xml属性を自動切り替えるUDF
私のアプリケーションは、データをさまざまなXML属性にシリアル化し、データに応じて、テキストまたはbase64として送信する場合があります。後者の場合、属性名は「attribute-base64」になります。したがって、SQLサーバー側では、次の規則を使用してXMLをデコードできます。
XMLと属性名を入力として受け入れ、文字列を出力するUDFを作成しようとしています。XQueryを生成するにはどうすればよいですか?これを試してみましたが、機能しません。
呼び出されたとき:
戻り結果は値ではありませんが、'root [1] / @ v'...どうやら、SQLサーバーはsql:variable( "@ xquery")をXQueryではなくXML値として理解しているようです。私は何をする必要がありますか?
c++ - Universal Disk Format デバイスまたはファイルから読み取るための C/C++ ライブラリ
UDF や ISO9660 などのファイルシステムを備えた一般的なデバイスから読み取り、ファイル/メタデータなどを抽出できる、優れた無料の C/C++ ライブラリはありますか?
これまでのところ、私が見つけることができたのは、有望なGNUのlibcdioと、うんざりしているほど多くのヒットがあり、他の結果をGoogleにプッシュし、かなり極端な価格のタグが付いている「マジックUDF」だけです。
クロスプラットフォームのサポートが望ましい (もちろん個人的な好みです)、Windows との互換性は残念な要件です。libcdio の GPLv3 ライセンスとの互換性については、まだ調査していません。
この質問はまだ開いていることに注意してください。誰かがそのようなライブラリを見つけたら、別の回答を受け入れます。
sql-server - SQL Serverは、ユーザー定義関数を含む実行プランのコストをどのように評価しますか?
関数の結果に基づいてフィルタリングするストアドプロシージャがありDATEADD
ます-SQLサーバーはその関数の出力に基づいて統計を保存できないため、ユーザー定義関数の使用に似ていると理解しています。実行計画。
クエリは次のようになります。
(したがって、結果を事前に計算することはできませんDATEADD
)
私が見ているのは、ひどいひどい実行プランです。これは、SQLサーバーがツリーの一部から返される行数を実際には約65,000であるのに、1と誤って推定しているためだと思います。ただし、データベースに異なる(必ずしも少ないわけではない)データが存在する場合、同じストアドプロシージャがほんのわずかな時間で実行されるのを見てきました。
私の質問は-このような場合、クエリオプティマイザーは関数の結果をどのように推定しますか?
更新:参考までに、私は、なぜあるときは良い実行計画を取得し、残りの時間は取得しないのかを理解することにもっと興味があります-私はこれをどのように修正するかについてすでにかなり良い考えを持っています長期的には。