SQLの窓

2011年10月23日


VB.net : 一時PL/SQL 内の変数をプログラムでやり取りする

一番重要なのは、PL/SQL の改行コードに CRLF の CR を含めない事です。

:変数名 でバインドさせると、自動的に PL/SQL 側で変数として定義されます

ここでは、テストの為に ParameterDirection.InputOutput を使っていますが、
入力データはもともと PL/SQL がテキストなので、文字列を置き換えて実行する
方法もあります。

関連する記事

http://logicalerror.seesaa.net/article/228467533.html

もっと言えば、PL/SQL 側の動的 PL/SQL を使わないでも比較的簡単に 動的な
SQL の実行が可能です。むしろ、パーツ化してマクロ化してしまえばより便利
になると思います。
DECLARE 

	WK_STRING VARCHAR2(50);

BEGIN 

	WK_STRING := :RET_VALUE;

	DBMS_OUTPUT.PUT_LINE(:RET_VALUE); 

	UPDATE 社員マスタ SET 氏名 = :RET_VALUE
		WHERE 社員コード = '0001';

	DBMS_OUTPUT.PUT_LINE(WK_STRING); 

	:RET_VALUE := '最終値';

END; 

Imports System.Data
Imports System.Data.OracleClient
Imports System.IO
Imports System.Text

Module Module1

	Sub Main()

		' 新しい OracleConnection オブジェクトを作成
		Dim myCon As OracleConnection = CreateConnection()

		if myCon is Nothing then
			Console.WriteLine("処理が異常終了しました")
			Return
		end if

		'---------------------------------------------------
		' キャラクタセット
		Dim SJIS_Enc As Encoding = Encoding.GetEncoding(932) 
		' 読み込み用
		' plsql.sql は、改行コードを LF のみにして下さい
		Dim ReadFile As StreamReader = New StreamReader( "plsql.sql", SJIS_Enc )

		' SHIFT_JIS で読み込み
		Dim SqlText As String = ReadFile.ReadToEnd()
		ReadFile.Close() 

		Dim myCommand As New OracleCommand()
		myCommand.Connection = myCon

		Dim myParam1 As OracleParameter
		' *******************************************
		' プロシージャの実行
		' *******************************************
		' 実行タイプ( SQLとして実行 )
		myCommand.CommandType = CommandType.Text
		' プロシージャ名
		myCommand.CommandText = SqlText

		' パラメータクリア
		myCommand.Parameters.Clear()
		' 内容を取得する変数用パラメータ( OUT なので、Direction プロパティにセット )
		myParam1 = myCommand.Parameters.Add("RET_VALUE", OracleType.Varchar)
		myParam1.Direction = ParameterDirection.InputOutput 
		myParam1.Size = 50		' 長さ
		myParam1.Value = "山田 太郎"

		Try
			' 結果を受け取り、後で処理する
			myCommand.ExecuteNonQuery()
		Catch ex As Exception
			myCon.Close()
			Console.WriteLine(ex.Message)
			Return
		End Try

		Console.WriteLine(myParam1.Value)

		'---------------------------------------------------

		Call EndConnection( myCon )

	End Sub


	' ******************************************************
	' 接続終了
	' ******************************************************
	Sub EndConnection( myCon As OracleConnection )

		' 接続を閉じる
		myCon.Close()

		' OracleConnection オブジェクトに使用されているすべてのリソースを解放
		myCon.Dispose()

		' 処理終了
		Console.WriteLine("処理が終了しました")

		' 一時停止
		Console.Write("Enterキーを押して下さい : ")
		Console.ReadLine()

	End Sub

	' ******************************************************
	' 接続作成
	' ******************************************************
	Function CreateConnection( ) As OracleConnection

		' 新しい OracleConnectionStringBuilder オブジェクトを作成
		Dim builder As New OracleConnectionStringBuilder()

		' 接続用のパラメータを追加
		builder.Add("Server", "light/xe")
		builder.Add("User ID", "LIGHTBOX")
		builder.Add("Password", "LIGHTBOX")

		' 内容を確認
		Console.WriteLine(builder.ConnectionString)

		' 新しい OracleConnection オブジェクトを作成
		Dim myCon As New OracleConnection()

		' 接続文字列を設定
		myCon.ConnectionString = builder.ConnectionString

		' 接続を開く
		Try
			myCon.Open()
		Catch ex As OracleException
			Console.WriteLine("接続エラーです")
			Console.WriteLine( ex.Message )
			Return Nothing
		End Try

		Return myCon

	End Function

End Module



posted by lightbox at 2011-10-23 17:48 | VB.NET : データベース | このブログの読者になる | 更新情報をチェックする
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり