• 締切済み

ストアド cast演算子 char型→int型に変換

SQLServerのストアドで困ってます。 int型の数値(suuti1)とchar型の数値(suuti2)を計算させたくて、 以下のようなSQL文を書いたのですが、実行できなくて困ってます。 ※エラーはでません。 kekka = suuti1 + CAST(suuti2 AS INTEGER) どうすれば計算できるでしょうか? 教えてください。

みんなの回答

  • t-ka
  • ベストアンサー率28% (14/50)
回答No.1

SET キーワードを入れてみてください。 例 DECLARE @a as int,@b as char(10),@c as int SET @a = 111 SET @b = '111' SET @c = @a + cast(@b as int) PRINT @c

aiai0006
質問者

お礼

ありがとうございます。 計算できました!!

関連するQ&A

  • ストアドファンクションについて

    最近SQL sarvarの勉強を始めた初心者です。 今、参考書を読みながらストアドファンクションを勉強してるんですが、 create function dbo.Fn_aaaaa (@dat datetime) returns char(14) as begin return cast(datepart(yyyy, @dat) as char(4)) + '年' + cast(datepart(mm, @dat) as char(2)) + '月' + cast(datepart(mm, @dat) as char(2)) + '日' + end という例題にある「returns char(14)」とはどういう意味なのかがよくわかりません。正直、戻り値という概念をしっかりと理解していない部分があり困っています。 本当に初歩的でもしかしたらSQLに関係のない質問かもしれませんがよろしければお教えください。

  • int型とchar型について

    C言語初心者です。 よろしくお願いします。 ◎1----------------------- #include<stdio.h> int main(void) { int ss[4]="789"; printf("%c\n",ss[0]); return 0; } --------------------------- ◎2----------------------- #include<stdio.h> int main(void) { int *p; p="789"; printf("%c\n",*p); return 0; } --------------------------- ◎1、◎2の2つのプログラムについて疑問があります。 ◎1の「int ss[4]="789";」と◎2の「int *p;」のintの部分は今まで、何の疑問も抱かず、「char」として入力していました。 そこでchar型は1バイトの整数、int型は4バイトの整数ということで容量が違うだけで、intとしても大丈夫だろうと思ったのですが、 ◎1では、「'initializing' : 'char [4]' から 'int [4]' に変換することはできません。」とエラーが出て、◎2では「'char [4]' から 'int *' に変換することはできません。」とエラーが出ます。 intは文字列は扱えないということなのでしょうか? 以上intだと実行できない理由がわかりません。 初歩的なことですいませんが、教えていただけると嬉しいです。

  • ストアドプロシージャのbegin、end

    下記の様なストアドプロシージャを作成し、VB側から実行させています。 どうしても、★SQL文2★の後のreturn文を実行してくれません。 (VB側ではreturn値が0と判断します。) このreturn文を★SQL文2★の前に移動すると、return値が-1として正常に取得できます。 begin、endのブロックの記述に何か間違いがあるのでしょうか? 環境:sqlserver2000,windows2000,vb6 よろしくお願いします。 CREATE PROCEDURE [sp_AAA] @PARAM1 varchar(16) AS begin if (~) begin ★SQL文1★ if (@@ERROR <> 0) begin return @@ERROR end end ★SQL文2★ return -1 ←ココ end

  • char型・int型を相互変換させるプログラミング

    今、C++で2つのPC間で数値データの送受信を出来るようにしようと思い、実際にデータを飛ばせるところまで来たのですが、送れるデータの型はchar型のみであるとのこと。 ですので、intの値を一旦charにして送り、送った先でまたintにしたらいいかなと考えてプログラミングしました。 簡単にできると思ったのですが、上手くいきません・・・。プログラムのどの部分が間違っているのでしょうか? 一人では、これ以上悩んでも好転しないので、皆さんのご指導をお願いします 以下プログラム抜粋、このプログラムでは型変換がおこなわれているかの確認ができればいいので、それのみでプログラミングしています =================================================== #include <stdio.h> #include <stdlib.h> #include <string> #include <iostream> int main() { int a=123; char *b=new char; int c=1; //変換部分 *b=(char)a; std::cout<<"int→char>>>"<< c << "\n"; //逆変換部分 d=atoi(c); std::cout<<"char→int>>>"<< d << "\n"; } ======================================================

  • 文字を整数として扱う場合の演算について質問

    javaの参考書に、文字を整数として扱う場合の演算についての解説があり、疑問点があったので質問します。 質問1:何故char型の変数は、キャストしなくてもint型のリテラルを代入することができるのか?      例えば、 以下の演算はキャストしなくてもこのまま代入できます。 char ch='a'; ch=98; でも、以下の演算はキャストしていないのでエラーになります。      char ch='a'; ch=ch+1; これは何故ですか?参考書に記載されていた理由として、「byte,char,short、 これ等の型の変数や値を使って計算すると、それ等は一度intに直して計算されるから」というような趣旨の事が書いてありました。 つまり、char型の変数には、キャストしない限りint型の数値を代入できないということですよね? でも前者のソースコードは、chはchar型であるにもかかわらず、int型のリテラル98を代入できています。 これは何故ですか? 質問2:javaの参考書に、インクリメント・デクリメント演算子と複合代入演算子は、型を保存するという解説がありました。これはどういう意味ですか? 僕の仮説では、例えば、      char ch='a';      ch+=5; であれば、5は、char型のまま代入されるということでしょうか?

    • ベストアンサー
    • Java
  • javaでのストアド呼び出し

    前の質問に似た質問があったのですが、 javaでのストアド呼び出しについて質問です 戻り値(Number型)を返すストアドを呼び出したいのですが ストアドは test で ストアド自体の引数は第1引数から第5引数までが IN で6番目がoutです。 String sql = "{ ? = call test(?,?,?,?,?)}" CallableStatement cstmt = con.prepareCall(sql); cstmt .registerOutParameter( 1, java.sql.Types.INTEGER );  //PL/SQLの戻り値 cstmt .setString( 2, "0" ); cstmt .setString( 3, "0" ); cstmt .setString( 4, "0" ); cstmt .setString( 5, "0" ); cstmt .setString( 6, "0" ); cstmt .execute(); try-catch内に上記ソースを記述し実行すると、エラーになってしまいます cstmt .registerOutParameter( 1, java.sql.Types.INTEGER );の部分が悪いと思うの出すが、PL/SQLのNUMBER型は java.sql.Types.INTEGER  ではいけないのでしょうか それとも書き方そのものがわるいのでしょうか? まわりにJavaが出来る人がいなく、困っています。 どなたか力を貸してください

    • ベストアンサー
    • Java
  • ストアドプロシージャーの作成方法

    実行環境・・・CSE update文を5つ発行したくストアドプロシージャを使おうと思ったのですが上手くいかず 困っています。 create function 関数名 引数なし AS 'update文1,update文2,・・・・,update文5' language ='sql'; と行っているのですが、エラーが出てしまいます。 参考書に載っている引数ありのだと上手くいくのですが・・・ なにかやり方が間違っているのでしょうか? ご教授お願いいたします。

  • ストアドを使う場合

    お世話になります。 ストアドをどういったときに使用したらいいか分かりません。 ストアドを使うとネットワークの負荷を軽減できるというのは 分かるのですが、単純に1テーブルを参照する場合は ストアドでなくてもそれほど変わらない? 複数にリンクがある場合に使用するべきなのですか? それともトータル値を取得したり計算を行わせたりする場合 に使用するべきなのでしょうか? 例えばVBにADOなどで直接SQL文を書くのと ストアドを呼ぶのでは 何を基準に直接SQLをよんでいいのか、ストアドを呼んだ方がいいのか 基準となる考え方がわかりません。 質問文が分かりずらかったらすみません。 お分かりになる方ご回答お願いします。

  • ストアドから得られるレコードセットを、別のストアドで利用したい

    現在、実行するとあるレコードセット(1行1列のみ)を返すストアドプロシージャProc_Aがありますが、このプロシージャを実行して得られる結果を、 別のプロシージャProc_Bで、以下のような形で使用したいと考えています。 ただし、Case文内部でのストアドの実行や、変数へのストアドの実行結果の代入を試しましたが、どちらもうまくいっていません。 なにか、よい解決策があれば、教えていただければ、と思います。 パターンA) Case内部で直接実行 select case Table_A.param_1 when 0 then Exec Proc_A '***','**' else '' end パターンB)いったんパラメータとして取得 declare @values as char(10) execute sp_executesql N'@values = Proc_A ''***'',''**''', N'@values char(10) OUTPUT', @values OUTPUT

  • ストアドプロシージャの実行について

    asp.net から sqlserver のストアドプロシージャを実行させる勉強をしています。 作成されているはずのストアドプロシージャを実行できずに困っています。 webformにテキストボックス、ボタン、データグリッドを貼り付け、ストアドプロシージャを作成し下記のプログラムを実行させるのですが上手くいきません。 (テキストボックスに任意で入力された数値のデータをボタンを押すと表示するものです) <エラー内容>→ ストアド プロシージャ 'proc1' が見つかりませんでした Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim cn As New SqlConnection Dim cmd As New SqlCommand cn.ConnectionString = "接続文字列" cmd.Connection = cn cmd.CommandText = "proc1" cmd.CommandType = System.Data.CommandType.StoredProcedure Dim p1 As SqlParameter = cmd.Parameters.Add("@param1", System.Data.SqlDbType.Int) p1.Value = TextBox1.Text cn.Open() Dim dr As SqlDataReader = cmd.ExecuteReader DataGrid2.DataSource = dr DataGrid2.DataBind() dr.Close() cn.Close() end sub ストアドproc1(場所:Northwind)の内容↓ CREATE procedure proc1 @param1 int as select * from products where categoryID=@param1 どなたか原因のわかる方がいれば、宜しくお願いします。