多くの変数を受け入れ、入力に基づいて結果テーブルを出力する、使いやすいストアドプロシージャをTeradataで作成しようとしています。 SQLアシスタント(プロバイダバージョン14.0.0.0)でクエリを構築しています。たとえば...Teradataの動的SQL条件付きストアドプロシージャ
Callステートメント...
CALL spAddressLookup
('?AcctNum', '?LastName', '?FirstName'
,'?Address' , '?City', '?State', '?ZipCode'
,'?Company', '?Email', '?Balance', ReturnCode) ;
文を作成...
CREATE PROCEDURE spAddressLookup(IN pAcctNum VARCHAR(25)
,IN pLastName VARCHAR(100), IN pFirstName VARCHAR(100), IN pAddress VARCHAR(255)
,IN pCity VARCHAR(255), IN pState VARCHAR(100), IN pZipCode VARCHAR(15)
,IN pCompany VARCHAR(255), IN pEmail VARCHAR(255), IN pBalance VARCHAR(10) , OUT ReturnCode CHAR(5))
BEGIN
私は動的にのみれるこれらの変数を含んでWHERE句を構築したいと思いますユーザーは値を入力します。私はIF私のproc内の条件文を使用しようとしましたが、SET文はIFの中でうまく動作していないようです。
これは私がしようとしているものです...
IF TRIM(pLastName) IS NOT NULL
THEN
SET strWHERE = ' AND (a.LastName LIKE ''%' || pAcctNum || '%'')'
END IF;
任意のアイデアは?
あなたはこの方法でそれを行うことができます
あなたは 'がIF.'内でもプレーしていないようです何を意味任意のエラー?またはif文を入力しませんでしたか?あなたはあなたのコードがどこに行くのか知るためにいくつかのデバッグ行を入れましたか? –
これを既存の 'strWHERE'に追加しますか?次に、このようにコード化する必要があります。 'SET strWHERE = strWHERE || 'AND(a.LastName LIKE' '%' || pAcctNum || '%' ')' – dnoeth
@dnoethは 'SET strWHERE = 'WHERE 1 = 1''を初期化するので、すべてのANDを連結することができます。 .. .. –