1

私はSQLについて間違った方法で考えているようです。いつもつまらないことを書いています。

たとえば、変数が必要です。だから私は思う:

DECLARE @CNT AS INT
SET @CNT = COUNT(DISTINCT database.schema.table.column)

なぜこれが機能しないのですか...?ここでは完全修飾参照を使用しているため、必要な値は明確である必要があります。

DECLARE @CNT AS INT
SET @CNT = (SELECT COUNT(DISTINCT database.schema.table.column) FROM column)

これは機能します...しかし、なぜselectを使用する必要があるのですか?

DDL または DML ステートメントのいずれかを前に付ける必要がありますか?

第二に、SQLステートメントはすべて1つのステップとして扱われるため、行ごとにデバッグできません。私がデバッグできる唯一の方法は、最も内側のサブクエリを選択して実行し、次に外側のサブクエリを含めて実行するということです。

地域窓口はありますか?

反復的思考ではなくセットベースの思考について聞いたことがありますが、関数型言語でもまだ反復的だと思います...反復は、最も内側の括弧から最も外側の括弧までであり、セット全体に適用されます。しかし、ここでも、セット内のどの値がエラーを引き起こしているのかわからないため、問題が発生します。

これが散らかっているように思われる場合は申し訳ありません...それは私がそれについてどのように感じているかを反映していると思います. たくさんの小さなコンポーネントから大きなストアド プロシージャを構築する方法がわかりません......vba のように、別のサブルーチンを呼び出して、必要な変数がグローバルであることを確認できます。

tldr:概念的な根拠が必要です / 何かを入力して F5 キーを押すと実際に何が起こるかを知る

4

2 に答える 2